package br.edu.ufcg.dsc.compiladores.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import br.edu.ufcg.dsc.compiladores.services.PascalGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalPascalParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_IDENTIFIER", "RULE_DIRECTIVE", "RULE_UNSIGNED_DIGIT_SEQUENCE", "RULE_RELATIONAL_OPERATOR", "RULE_ADITION_OPERATOR", "RULE_MULTIPLICATION_OPERATOR", "RULE_STRG", "RULE_DIGIT", "RULE_LETTER", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'.'", "'program'", "'('", "')'", "';'", "','", "'function'", "'procedure'", "':'", "'var'", "'array'", "'['", "']'", "'of'", "'packed'", "'..'", "'label'", "'const'", "'='", "'type'", "'^'", "'file'", "'set'", "'record'", "'end'", "'case'", "'begin'", "'with'", "'do'", "'if'", "'then'", "'else'", "'for'", "':='", "'to'", "'downto'", "'repeat'", "'until'", "'while'", "'goto'", "'nil'", "'not'", "'E'", "'e'", "'+'", "'-'"
    };
    public static final int RULE_ID=13;
    public static final int T__64=64;
    public static final int T__29=29;
    public static final int T__65=65;
    public static final int T__28=28;
    public static final int T__62=62;
    public static final int T__27=27;
    public static final int T__63=63;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=19;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int EOF=-1;
    public static final int RULE_ADITION_OPERATOR=8;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__59=59;
    public static final int RULE_MULTIPLICATION_OPERATOR=9;
    public static final int RULE_INT=14;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int RULE_RELATIONAL_OPERATOR=7;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_STRG=10;
    public static final int RULE_UNSIGNED_DIGIT_SEQUENCE=6;
    public static final int RULE_IDENTIFIER=4;
    public static final int RULE_SL_COMMENT=17;
    public static final int RULE_LETTER=12;
    public static final int RULE_ML_COMMENT=16;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=15;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_DIRECTIVE=5;
    public static final int RULE_WS=18;
    public static final int RULE_DIGIT=11;

    // delegates
    // delegators


        public InternalPascalParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalPascalParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalPascalParser.tokenNames; }
    public String getGrammarFileName() { return "../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g"; }



     	private PascalGrammarAccess grammarAccess;
     	
        public InternalPascalParser(TokenStream input, PascalGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected PascalGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:76:1: ruleModel returns [EObject current=null] : ( (lv_programs_0_0= ruleprogram ) )* ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_programs_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:79:28: ( ( (lv_programs_0_0= ruleprogram ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:80:1: ( (lv_programs_0_0= ruleprogram ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:80:1: ( (lv_programs_0_0= ruleprogram ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==21) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:81:1: (lv_programs_0_0= ruleprogram )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:81:1: (lv_programs_0_0= ruleprogram )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:82:3: lv_programs_0_0= ruleprogram
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getProgramsProgramParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleprogram_in_ruleModel130);
            	    lv_programs_0_0=ruleprogram();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"programs",
            	            		lv_programs_0_0, 
            	            		"program");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleprogram"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:106:1: entryRuleprogram returns [EObject current=null] : iv_ruleprogram= ruleprogram EOF ;
    public final EObject entryRuleprogram() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprogram = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:107:2: (iv_ruleprogram= ruleprogram EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:108:2: iv_ruleprogram= ruleprogram EOF
            {
             newCompositeNode(grammarAccess.getProgramRule()); 
            pushFollow(FOLLOW_ruleprogram_in_entryRuleprogram166);
            iv_ruleprogram=ruleprogram();

            state._fsp--;

             current =iv_ruleprogram; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprogram176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprogram"


    // $ANTLR start "ruleprogram"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:115:1: ruleprogram returns [EObject current=null] : ( ( (lv_heading_0_0= ruleprogram_heading ) ) ( (lv_block_1_0= ruleblock ) ) otherlv_2= '.' ) ;
    public final EObject ruleprogram() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_heading_0_0 = null;

        EObject lv_block_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:118:28: ( ( ( (lv_heading_0_0= ruleprogram_heading ) ) ( (lv_block_1_0= ruleblock ) ) otherlv_2= '.' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:119:1: ( ( (lv_heading_0_0= ruleprogram_heading ) ) ( (lv_block_1_0= ruleblock ) ) otherlv_2= '.' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:119:1: ( ( (lv_heading_0_0= ruleprogram_heading ) ) ( (lv_block_1_0= ruleblock ) ) otherlv_2= '.' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:119:2: ( (lv_heading_0_0= ruleprogram_heading ) ) ( (lv_block_1_0= ruleblock ) ) otherlv_2= '.'
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:119:2: ( (lv_heading_0_0= ruleprogram_heading ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:120:1: (lv_heading_0_0= ruleprogram_heading )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:120:1: (lv_heading_0_0= ruleprogram_heading )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:121:3: lv_heading_0_0= ruleprogram_heading
            {
             
            	        newCompositeNode(grammarAccess.getProgramAccess().getHeadingProgram_headingParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleprogram_heading_in_ruleprogram222);
            lv_heading_0_0=ruleprogram_heading();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProgramRule());
            	        }
                   		set(
                   			current, 
                   			"heading",
                    		lv_heading_0_0, 
                    		"program_heading");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:137:2: ( (lv_block_1_0= ruleblock ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:138:1: (lv_block_1_0= ruleblock )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:138:1: (lv_block_1_0= ruleblock )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:139:3: lv_block_1_0= ruleblock
            {
             
            	        newCompositeNode(grammarAccess.getProgramAccess().getBlockBlockParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleblock_in_ruleprogram243);
            lv_block_1_0=ruleblock();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProgramRule());
            	        }
                   		set(
                   			current, 
                   			"block",
                    		lv_block_1_0, 
                    		"block");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,20,FOLLOW_20_in_ruleprogram255); 

                	newLeafNode(otherlv_2, grammarAccess.getProgramAccess().getFullStopKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprogram"


    // $ANTLR start "entryRuleprogram_heading"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:167:1: entryRuleprogram_heading returns [EObject current=null] : iv_ruleprogram_heading= ruleprogram_heading EOF ;
    public final EObject entryRuleprogram_heading() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprogram_heading = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:168:2: (iv_ruleprogram_heading= ruleprogram_heading EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:169:2: iv_ruleprogram_heading= ruleprogram_heading EOF
            {
             newCompositeNode(grammarAccess.getProgram_headingRule()); 
            pushFollow(FOLLOW_ruleprogram_heading_in_entryRuleprogram_heading291);
            iv_ruleprogram_heading=ruleprogram_heading();

            state._fsp--;

             current =iv_ruleprogram_heading; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprogram_heading301); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprogram_heading"


    // $ANTLR start "ruleprogram_heading"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:176:1: ruleprogram_heading returns [EObject current=null] : (otherlv_0= 'program' ( (lv_programName_1_0= RULE_IDENTIFIER ) ) otherlv_2= '(' ( (lv_params_3_0= ruleidentifier_list ) ) otherlv_4= ')' otherlv_5= ';' ) ;
    public final EObject ruleprogram_heading() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_programName_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject lv_params_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:179:28: ( (otherlv_0= 'program' ( (lv_programName_1_0= RULE_IDENTIFIER ) ) otherlv_2= '(' ( (lv_params_3_0= ruleidentifier_list ) ) otherlv_4= ')' otherlv_5= ';' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:180:1: (otherlv_0= 'program' ( (lv_programName_1_0= RULE_IDENTIFIER ) ) otherlv_2= '(' ( (lv_params_3_0= ruleidentifier_list ) ) otherlv_4= ')' otherlv_5= ';' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:180:1: (otherlv_0= 'program' ( (lv_programName_1_0= RULE_IDENTIFIER ) ) otherlv_2= '(' ( (lv_params_3_0= ruleidentifier_list ) ) otherlv_4= ')' otherlv_5= ';' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:180:3: otherlv_0= 'program' ( (lv_programName_1_0= RULE_IDENTIFIER ) ) otherlv_2= '(' ( (lv_params_3_0= ruleidentifier_list ) ) otherlv_4= ')' otherlv_5= ';'
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleprogram_heading338); 

                	newLeafNode(otherlv_0, grammarAccess.getProgram_headingAccess().getProgramKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:184:1: ( (lv_programName_1_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:185:1: (lv_programName_1_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:185:1: (lv_programName_1_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:186:3: lv_programName_1_0= RULE_IDENTIFIER
            {
            lv_programName_1_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleprogram_heading355); 

            			newLeafNode(lv_programName_1_0, grammarAccess.getProgram_headingAccess().getProgramNameIDENTIFIERTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProgram_headingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"programName",
                    		lv_programName_1_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleprogram_heading372); 

                	newLeafNode(otherlv_2, grammarAccess.getProgram_headingAccess().getLeftParenthesisKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:206:1: ( (lv_params_3_0= ruleidentifier_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:207:1: (lv_params_3_0= ruleidentifier_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:207:1: (lv_params_3_0= ruleidentifier_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:208:3: lv_params_3_0= ruleidentifier_list
            {
             
            	        newCompositeNode(grammarAccess.getProgram_headingAccess().getParamsIdentifier_listParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleidentifier_list_in_ruleprogram_heading393);
            lv_params_3_0=ruleidentifier_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProgram_headingRule());
            	        }
                   		set(
                   			current, 
                   			"params",
                    		lv_params_3_0, 
                    		"identifier_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleprogram_heading405); 

                	newLeafNode(otherlv_4, grammarAccess.getProgram_headingAccess().getRightParenthesisKeyword_4());
                
            otherlv_5=(Token)match(input,24,FOLLOW_24_in_ruleprogram_heading417); 

                	newLeafNode(otherlv_5, grammarAccess.getProgram_headingAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprogram_heading"


    // $ANTLR start "entryRuleblock"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:240:1: entryRuleblock returns [EObject current=null] : iv_ruleblock= ruleblock EOF ;
    public final EObject entryRuleblock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleblock = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:241:2: (iv_ruleblock= ruleblock EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:242:2: iv_ruleblock= ruleblock EOF
            {
             newCompositeNode(grammarAccess.getBlockRule()); 
            pushFollow(FOLLOW_ruleblock_in_entryRuleblock453);
            iv_ruleblock=ruleblock();

            state._fsp--;

             current =iv_ruleblock; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleblock463); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleblock"


    // $ANTLR start "ruleblock"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:249:1: ruleblock returns [EObject current=null] : ( ( (lv_declarationPart_0_0= ruledeclaration_part ) ) ( (lv_statementPart_1_0= ruleSTATEMENT_PART ) ) ) ;
    public final EObject ruleblock() throws RecognitionException {
        EObject current = null;

        EObject lv_declarationPart_0_0 = null;

        EObject lv_statementPart_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:252:28: ( ( ( (lv_declarationPart_0_0= ruledeclaration_part ) ) ( (lv_statementPart_1_0= ruleSTATEMENT_PART ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:253:1: ( ( (lv_declarationPart_0_0= ruledeclaration_part ) ) ( (lv_statementPart_1_0= ruleSTATEMENT_PART ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:253:1: ( ( (lv_declarationPart_0_0= ruledeclaration_part ) ) ( (lv_statementPart_1_0= ruleSTATEMENT_PART ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:253:2: ( (lv_declarationPart_0_0= ruledeclaration_part ) ) ( (lv_statementPart_1_0= ruleSTATEMENT_PART ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:253:2: ( (lv_declarationPart_0_0= ruledeclaration_part ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:254:1: (lv_declarationPart_0_0= ruledeclaration_part )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:254:1: (lv_declarationPart_0_0= ruledeclaration_part )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:255:3: lv_declarationPart_0_0= ruledeclaration_part
            {
             
            	        newCompositeNode(grammarAccess.getBlockAccess().getDeclarationPartDeclaration_partParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruledeclaration_part_in_ruleblock509);
            lv_declarationPart_0_0=ruledeclaration_part();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBlockRule());
            	        }
                   		set(
                   			current, 
                   			"declarationPart",
                    		lv_declarationPart_0_0, 
                    		"declaration_part");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:271:2: ( (lv_statementPart_1_0= ruleSTATEMENT_PART ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:272:1: (lv_statementPart_1_0= ruleSTATEMENT_PART )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:272:1: (lv_statementPart_1_0= ruleSTATEMENT_PART )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:273:3: lv_statementPart_1_0= ruleSTATEMENT_PART
            {
             
            	        newCompositeNode(grammarAccess.getBlockAccess().getStatementPartSTATEMENT_PARTParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleSTATEMENT_PART_in_ruleblock530);
            lv_statementPart_1_0=ruleSTATEMENT_PART();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBlockRule());
            	        }
                   		set(
                   			current, 
                   			"statementPart",
                    		lv_statementPart_1_0, 
                    		"STATEMENT_PART");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleblock"


    // $ANTLR start "entryRuleidentifier_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:297:1: entryRuleidentifier_list returns [EObject current=null] : iv_ruleidentifier_list= ruleidentifier_list EOF ;
    public final EObject entryRuleidentifier_list() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleidentifier_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:298:2: (iv_ruleidentifier_list= ruleidentifier_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:299:2: iv_ruleidentifier_list= ruleidentifier_list EOF
            {
             newCompositeNode(grammarAccess.getIdentifier_listRule()); 
            pushFollow(FOLLOW_ruleidentifier_list_in_entryRuleidentifier_list566);
            iv_ruleidentifier_list=ruleidentifier_list();

            state._fsp--;

             current =iv_ruleidentifier_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleidentifier_list576); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleidentifier_list"


    // $ANTLR start "ruleidentifier_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:306:1: ruleidentifier_list returns [EObject current=null] : ( ( (lv_identifiers_0_0= RULE_IDENTIFIER ) ) (otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) ) )* ) ;
    public final EObject ruleidentifier_list() throws RecognitionException {
        EObject current = null;

        Token lv_identifiers_0_0=null;
        Token otherlv_1=null;
        Token lv_identifiers_2_0=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:309:28: ( ( ( (lv_identifiers_0_0= RULE_IDENTIFIER ) ) (otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:310:1: ( ( (lv_identifiers_0_0= RULE_IDENTIFIER ) ) (otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:310:1: ( ( (lv_identifiers_0_0= RULE_IDENTIFIER ) ) (otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:310:2: ( (lv_identifiers_0_0= RULE_IDENTIFIER ) ) (otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:310:2: ( (lv_identifiers_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:311:1: (lv_identifiers_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:311:1: (lv_identifiers_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:312:3: lv_identifiers_0_0= RULE_IDENTIFIER
            {
            lv_identifiers_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleidentifier_list618); 

            			newLeafNode(lv_identifiers_0_0, grammarAccess.getIdentifier_listAccess().getIdentifiersIDENTIFIERTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIdentifier_listRule());
            	        }
                   		addWithLastConsumed(
                   			current, 
                   			"identifiers",
                    		lv_identifiers_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:328:2: (otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==25) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:328:4: otherlv_1= ',' ( (lv_identifiers_2_0= RULE_IDENTIFIER ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleidentifier_list636); 

            	        	newLeafNode(otherlv_1, grammarAccess.getIdentifier_listAccess().getCommaKeyword_1_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:332:1: ( (lv_identifiers_2_0= RULE_IDENTIFIER ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:333:1: (lv_identifiers_2_0= RULE_IDENTIFIER )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:333:1: (lv_identifiers_2_0= RULE_IDENTIFIER )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:334:3: lv_identifiers_2_0= RULE_IDENTIFIER
            	    {
            	    lv_identifiers_2_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleidentifier_list653); 

            	    			newLeafNode(lv_identifiers_2_0, grammarAccess.getIdentifier_listAccess().getIdentifiersIDENTIFIERTerminalRuleCall_1_1_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getIdentifier_listRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"identifiers",
            	            		lv_identifiers_2_0, 
            	            		"IDENTIFIER");
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleidentifier_list"


    // $ANTLR start "entryRuledeclaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:358:1: entryRuledeclaration_part returns [EObject current=null] : iv_ruledeclaration_part= ruledeclaration_part EOF ;
    public final EObject entryRuledeclaration_part() throws RecognitionException {
        EObject current = null;

        EObject iv_ruledeclaration_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:359:2: (iv_ruledeclaration_part= ruledeclaration_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:360:2: iv_ruledeclaration_part= ruledeclaration_part EOF
            {
             newCompositeNode(grammarAccess.getDeclaration_partRule()); 
            pushFollow(FOLLOW_ruledeclaration_part_in_entryRuledeclaration_part696);
            iv_ruledeclaration_part=ruledeclaration_part();

            state._fsp--;

             current =iv_ruledeclaration_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRuledeclaration_part706); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuledeclaration_part"


    // $ANTLR start "ruledeclaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:367:1: ruledeclaration_part returns [EObject current=null] : ( ( (lv_labelDeclarationPart_0_0= rulelabel_declaration_part ) )? ( (lv_constantDeclarationPart_1_0= ruleconstant_definition_part ) )? ( (lv_typeDeclarationPart_2_0= ruletype_definition_part ) )? ( (lv_variableDeclarationPart_3_0= rulevariable_declaration_part ) )? ( (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part ) ) ) ;
    public final EObject ruledeclaration_part() throws RecognitionException {
        EObject current = null;

        EObject lv_labelDeclarationPart_0_0 = null;

        EObject lv_constantDeclarationPart_1_0 = null;

        EObject lv_typeDeclarationPart_2_0 = null;

        EObject lv_variableDeclarationPart_3_0 = null;

        EObject lv_procedureAndFunctionDeclarationPart_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:370:28: ( ( ( (lv_labelDeclarationPart_0_0= rulelabel_declaration_part ) )? ( (lv_constantDeclarationPart_1_0= ruleconstant_definition_part ) )? ( (lv_typeDeclarationPart_2_0= ruletype_definition_part ) )? ( (lv_variableDeclarationPart_3_0= rulevariable_declaration_part ) )? ( (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:371:1: ( ( (lv_labelDeclarationPart_0_0= rulelabel_declaration_part ) )? ( (lv_constantDeclarationPart_1_0= ruleconstant_definition_part ) )? ( (lv_typeDeclarationPart_2_0= ruletype_definition_part ) )? ( (lv_variableDeclarationPart_3_0= rulevariable_declaration_part ) )? ( (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:371:1: ( ( (lv_labelDeclarationPart_0_0= rulelabel_declaration_part ) )? ( (lv_constantDeclarationPart_1_0= ruleconstant_definition_part ) )? ( (lv_typeDeclarationPart_2_0= ruletype_definition_part ) )? ( (lv_variableDeclarationPart_3_0= rulevariable_declaration_part ) )? ( (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:371:2: ( (lv_labelDeclarationPart_0_0= rulelabel_declaration_part ) )? ( (lv_constantDeclarationPart_1_0= ruleconstant_definition_part ) )? ( (lv_typeDeclarationPart_2_0= ruletype_definition_part ) )? ( (lv_variableDeclarationPart_3_0= rulevariable_declaration_part ) )? ( (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:371:2: ( (lv_labelDeclarationPart_0_0= rulelabel_declaration_part ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==36) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:372:1: (lv_labelDeclarationPart_0_0= rulelabel_declaration_part )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:372:1: (lv_labelDeclarationPart_0_0= rulelabel_declaration_part )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:373:3: lv_labelDeclarationPart_0_0= rulelabel_declaration_part
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeclaration_partAccess().getLabelDeclarationPartLabel_declaration_partParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulelabel_declaration_part_in_ruledeclaration_part752);
                    lv_labelDeclarationPart_0_0=rulelabel_declaration_part();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeclaration_partRule());
                    	        }
                           		set(
                           			current, 
                           			"labelDeclarationPart",
                            		lv_labelDeclarationPart_0_0, 
                            		"label_declaration_part");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:389:3: ( (lv_constantDeclarationPart_1_0= ruleconstant_definition_part ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==37) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:390:1: (lv_constantDeclarationPart_1_0= ruleconstant_definition_part )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:390:1: (lv_constantDeclarationPart_1_0= ruleconstant_definition_part )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:391:3: lv_constantDeclarationPart_1_0= ruleconstant_definition_part
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeclaration_partAccess().getConstantDeclarationPartConstant_definition_partParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleconstant_definition_part_in_ruledeclaration_part774);
                    lv_constantDeclarationPart_1_0=ruleconstant_definition_part();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeclaration_partRule());
                    	        }
                           		set(
                           			current, 
                           			"constantDeclarationPart",
                            		lv_constantDeclarationPart_1_0, 
                            		"constant_definition_part");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:407:3: ( (lv_typeDeclarationPart_2_0= ruletype_definition_part ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==39) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:408:1: (lv_typeDeclarationPart_2_0= ruletype_definition_part )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:408:1: (lv_typeDeclarationPart_2_0= ruletype_definition_part )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:409:3: lv_typeDeclarationPart_2_0= ruletype_definition_part
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeclaration_partAccess().getTypeDeclarationPartType_definition_partParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruletype_definition_part_in_ruledeclaration_part796);
                    lv_typeDeclarationPart_2_0=ruletype_definition_part();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeclaration_partRule());
                    	        }
                           		set(
                           			current, 
                           			"typeDeclarationPart",
                            		lv_typeDeclarationPart_2_0, 
                            		"type_definition_part");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:425:3: ( (lv_variableDeclarationPart_3_0= rulevariable_declaration_part ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==29) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:426:1: (lv_variableDeclarationPart_3_0= rulevariable_declaration_part )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:426:1: (lv_variableDeclarationPart_3_0= rulevariable_declaration_part )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:427:3: lv_variableDeclarationPart_3_0= rulevariable_declaration_part
                    {
                     
                    	        newCompositeNode(grammarAccess.getDeclaration_partAccess().getVariableDeclarationPartVariable_declaration_partParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_rulevariable_declaration_part_in_ruledeclaration_part818);
                    lv_variableDeclarationPart_3_0=rulevariable_declaration_part();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDeclaration_partRule());
                    	        }
                           		set(
                           			current, 
                           			"variableDeclarationPart",
                            		lv_variableDeclarationPart_3_0, 
                            		"variable_declaration_part");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:443:3: ( (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:444:1: (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:444:1: (lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:445:3: lv_procedureAndFunctionDeclarationPart_4_0= ruleprocedure_and_function_declaration_part
            {
             
            	        newCompositeNode(grammarAccess.getDeclaration_partAccess().getProcedureAndFunctionDeclarationPartProcedure_and_function_declaration_partParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleprocedure_and_function_declaration_part_in_ruledeclaration_part840);
            lv_procedureAndFunctionDeclarationPart_4_0=ruleprocedure_and_function_declaration_part();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getDeclaration_partRule());
            	        }
                   		set(
                   			current, 
                   			"procedureAndFunctionDeclarationPart",
                    		lv_procedureAndFunctionDeclarationPart_4_0, 
                    		"procedure_and_function_declaration_part");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruledeclaration_part"


    // $ANTLR start "entryRuleprocedure_and_function_declaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:469:1: entryRuleprocedure_and_function_declaration_part returns [EObject current=null] : iv_ruleprocedure_and_function_declaration_part= ruleprocedure_and_function_declaration_part EOF ;
    public final EObject entryRuleprocedure_and_function_declaration_part() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_and_function_declaration_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:470:2: (iv_ruleprocedure_and_function_declaration_part= ruleprocedure_and_function_declaration_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:471:2: iv_ruleprocedure_and_function_declaration_part= ruleprocedure_and_function_declaration_part EOF
            {
             newCompositeNode(grammarAccess.getProcedure_and_function_declaration_partRule()); 
            pushFollow(FOLLOW_ruleprocedure_and_function_declaration_part_in_entryRuleprocedure_and_function_declaration_part876);
            iv_ruleprocedure_and_function_declaration_part=ruleprocedure_and_function_declaration_part();

            state._fsp--;

             current =iv_ruleprocedure_and_function_declaration_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_and_function_declaration_part886); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_and_function_declaration_part"


    // $ANTLR start "ruleprocedure_and_function_declaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:478:1: ruleprocedure_and_function_declaration_part returns [EObject current=null] : ( () ( ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';' )* ) ;
    public final EObject ruleprocedure_and_function_declaration_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_3=null;
        EObject lv_procedures_1_0 = null;

        EObject lv_functions_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:481:28: ( ( () ( ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';' )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:482:1: ( () ( ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';' )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:482:1: ( () ( ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';' )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:482:2: () ( ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';' )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:482:2: ()
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:483:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getProcedure_and_function_declaration_partAccess().getProceduresAndFunctionDeclarationAction_0(),
                        current);
                

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:488:2: ( ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';' )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( ((LA8_0>=26 && LA8_0<=27)) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:488:3: ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) ) otherlv_3= ';'
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:488:3: ( ( (lv_procedures_1_0= ruleprocedure_declaration ) ) | ( (lv_functions_2_0= rulefunction_declaration ) ) )
            	    int alt7=2;
            	    int LA7_0 = input.LA(1);

            	    if ( (LA7_0==27) ) {
            	        alt7=1;
            	    }
            	    else if ( (LA7_0==26) ) {
            	        alt7=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 7, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt7) {
            	        case 1 :
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:488:4: ( (lv_procedures_1_0= ruleprocedure_declaration ) )
            	            {
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:488:4: ( (lv_procedures_1_0= ruleprocedure_declaration ) )
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:489:1: (lv_procedures_1_0= ruleprocedure_declaration )
            	            {
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:489:1: (lv_procedures_1_0= ruleprocedure_declaration )
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:490:3: lv_procedures_1_0= ruleprocedure_declaration
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getProcedure_and_function_declaration_partAccess().getProceduresProcedure_declarationParserRuleCall_1_0_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleprocedure_declaration_in_ruleprocedure_and_function_declaration_part943);
            	            lv_procedures_1_0=ruleprocedure_declaration();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getProcedure_and_function_declaration_partRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"procedures",
            	                    		lv_procedures_1_0, 
            	                    		"procedure_declaration");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:507:6: ( (lv_functions_2_0= rulefunction_declaration ) )
            	            {
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:507:6: ( (lv_functions_2_0= rulefunction_declaration ) )
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:508:1: (lv_functions_2_0= rulefunction_declaration )
            	            {
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:508:1: (lv_functions_2_0= rulefunction_declaration )
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:509:3: lv_functions_2_0= rulefunction_declaration
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getProcedure_and_function_declaration_partAccess().getFunctionsFunction_declarationParserRuleCall_1_0_1_0()); 
            	            	    
            	            pushFollow(FOLLOW_rulefunction_declaration_in_ruleprocedure_and_function_declaration_part970);
            	            lv_functions_2_0=rulefunction_declaration();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getProcedure_and_function_declaration_partRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"functions",
            	                    		lv_functions_2_0, 
            	                    		"function_declaration");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;

            	    }

            	    otherlv_3=(Token)match(input,24,FOLLOW_24_in_ruleprocedure_and_function_declaration_part983); 

            	        	newLeafNode(otherlv_3, grammarAccess.getProcedure_and_function_declaration_partAccess().getSemicolonKeyword_1_1());
            	        

            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_and_function_declaration_part"


    // $ANTLR start "entryRulefunction_declaration"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:537:1: entryRulefunction_declaration returns [EObject current=null] : iv_rulefunction_declaration= rulefunction_declaration EOF ;
    public final EObject entryRulefunction_declaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_declaration = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:538:2: (iv_rulefunction_declaration= rulefunction_declaration EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:539:2: iv_rulefunction_declaration= rulefunction_declaration EOF
            {
             newCompositeNode(grammarAccess.getFunction_declarationRule()); 
            pushFollow(FOLLOW_rulefunction_declaration_in_entryRulefunction_declaration1021);
            iv_rulefunction_declaration=rulefunction_declaration();

            state._fsp--;

             current =iv_rulefunction_declaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_declaration1031); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_declaration"


    // $ANTLR start "rulefunction_declaration"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:546:1: rulefunction_declaration returns [EObject current=null] : ( ( () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE ) ) | ( ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) ) ) ) ;
    public final EObject rulefunction_declaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token this_DIRECTIVE_4=null;
        Token otherlv_6=null;
        EObject lv_heading_1_0 = null;

        EObject lv_body_3_0 = null;

        EObject lv_heading_5_0 = null;

        EObject lv_body_7_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:549:28: ( ( ( () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE ) ) | ( ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:550:1: ( ( () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE ) ) | ( ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:550:1: ( ( () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE ) ) | ( ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) ) ) )
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==26) ) {
                int LA10_1 = input.LA(2);

                if ( (LA10_1==RULE_IDENTIFIER) ) {
                    int LA10_2 = input.LA(3);

                    if ( (LA10_2==22||LA10_2==28) ) {
                        alt10=1;
                    }
                    else if ( (LA10_2==24) ) {
                        alt10=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 10, 2, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }
            switch (alt10) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:550:2: ( () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:550:2: ( () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:550:3: () ( (lv_heading_1_0= rulefunction_heading ) ) otherlv_2= ';' ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:550:3: ()
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:551:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getFunction_declarationAccess().getFunctionDeclarationWithHeadingAction_0_0(),
                                current);
                        

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:556:2: ( (lv_heading_1_0= rulefunction_heading ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:557:1: (lv_heading_1_0= rulefunction_heading )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:557:1: (lv_heading_1_0= rulefunction_heading )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:558:3: lv_heading_1_0= rulefunction_heading
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunction_declarationAccess().getHeadingFunction_headingParserRuleCall_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulefunction_heading_in_rulefunction_declaration1087);
                    lv_heading_1_0=rulefunction_heading();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunction_declarationRule());
                    	        }
                           		set(
                           			current, 
                           			"heading",
                            		lv_heading_1_0, 
                            		"function_heading");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_2=(Token)match(input,24,FOLLOW_24_in_rulefunction_declaration1099); 

                        	newLeafNode(otherlv_2, grammarAccess.getFunction_declarationAccess().getSemicolonKeyword_0_2());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:578:1: ( ( (lv_body_3_0= rulefunction_body ) ) | this_DIRECTIVE_4= RULE_DIRECTIVE )
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0==EOF||(LA9_0>=26 && LA9_0<=27)||LA9_0==29||(LA9_0>=36 && LA9_0<=37)||LA9_0==39||LA9_0==46) ) {
                        alt9=1;
                    }
                    else if ( (LA9_0==RULE_DIRECTIVE) ) {
                        alt9=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 9, 0, input);

                        throw nvae;
                    }
                    switch (alt9) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:578:2: ( (lv_body_3_0= rulefunction_body ) )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:578:2: ( (lv_body_3_0= rulefunction_body ) )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:579:1: (lv_body_3_0= rulefunction_body )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:579:1: (lv_body_3_0= rulefunction_body )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:580:3: lv_body_3_0= rulefunction_body
                            {
                             
                            	        newCompositeNode(grammarAccess.getFunction_declarationAccess().getBodyFunction_bodyParserRuleCall_0_3_0_0()); 
                            	    
                            pushFollow(FOLLOW_rulefunction_body_in_rulefunction_declaration1121);
                            lv_body_3_0=rulefunction_body();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getFunction_declarationRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"body",
                                    		lv_body_3_0, 
                                    		"function_body");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:597:6: this_DIRECTIVE_4= RULE_DIRECTIVE
                            {
                            this_DIRECTIVE_4=(Token)match(input,RULE_DIRECTIVE,FOLLOW_RULE_DIRECTIVE_in_rulefunction_declaration1138); 
                             
                                newLeafNode(this_DIRECTIVE_4, grammarAccess.getFunction_declarationAccess().getDIRECTIVETerminalRuleCall_0_3_1()); 
                                

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:602:6: ( ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:602:6: ( ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:602:7: ( (lv_heading_5_0= rulefunction_identification ) ) otherlv_6= ';' ( (lv_body_7_0= rulefunction_body ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:602:7: ( (lv_heading_5_0= rulefunction_identification ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:603:1: (lv_heading_5_0= rulefunction_identification )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:603:1: (lv_heading_5_0= rulefunction_identification )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:604:3: lv_heading_5_0= rulefunction_identification
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunction_declarationAccess().getHeadingFunction_identificationParserRuleCall_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulefunction_identification_in_rulefunction_declaration1167);
                    lv_heading_5_0=rulefunction_identification();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunction_declarationRule());
                    	        }
                           		set(
                           			current, 
                           			"heading",
                            		lv_heading_5_0, 
                            		"function_identification");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_6=(Token)match(input,24,FOLLOW_24_in_rulefunction_declaration1179); 

                        	newLeafNode(otherlv_6, grammarAccess.getFunction_declarationAccess().getSemicolonKeyword_1_1());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:624:1: ( (lv_body_7_0= rulefunction_body ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:625:1: (lv_body_7_0= rulefunction_body )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:625:1: (lv_body_7_0= rulefunction_body )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:626:3: lv_body_7_0= rulefunction_body
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunction_declarationAccess().getBodyFunction_bodyParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_rulefunction_body_in_rulefunction_declaration1200);
                    lv_body_7_0=rulefunction_body();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunction_declarationRule());
                    	        }
                           		set(
                           			current, 
                           			"body",
                            		lv_body_7_0, 
                            		"function_body");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_declaration"


    // $ANTLR start "entryRulefunction_identification"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:650:1: entryRulefunction_identification returns [EObject current=null] : iv_rulefunction_identification= rulefunction_identification EOF ;
    public final EObject entryRulefunction_identification() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_identification = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:651:2: (iv_rulefunction_identification= rulefunction_identification EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:652:2: iv_rulefunction_identification= rulefunction_identification EOF
            {
             newCompositeNode(grammarAccess.getFunction_identificationRule()); 
            pushFollow(FOLLOW_rulefunction_identification_in_entryRulefunction_identification1237);
            iv_rulefunction_identification=rulefunction_identification();

            state._fsp--;

             current =iv_rulefunction_identification; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_identification1247); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_identification"


    // $ANTLR start "rulefunction_identification"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:659:1: rulefunction_identification returns [EObject current=null] : (otherlv_0= 'function' ( (lv_functionName_1_0= rulefunction_identifier ) ) ) ;
    public final EObject rulefunction_identification() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_functionName_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:662:28: ( (otherlv_0= 'function' ( (lv_functionName_1_0= rulefunction_identifier ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:663:1: (otherlv_0= 'function' ( (lv_functionName_1_0= rulefunction_identifier ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:663:1: (otherlv_0= 'function' ( (lv_functionName_1_0= rulefunction_identifier ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:663:3: otherlv_0= 'function' ( (lv_functionName_1_0= rulefunction_identifier ) )
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_rulefunction_identification1284); 

                	newLeafNode(otherlv_0, grammarAccess.getFunction_identificationAccess().getFunctionKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:667:1: ( (lv_functionName_1_0= rulefunction_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:668:1: (lv_functionName_1_0= rulefunction_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:668:1: (lv_functionName_1_0= rulefunction_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:669:3: lv_functionName_1_0= rulefunction_identifier
            {
             
            	        newCompositeNode(grammarAccess.getFunction_identificationAccess().getFunctionNameFunction_identifierParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulefunction_identifier_in_rulefunction_identification1305);
            lv_functionName_1_0=rulefunction_identifier();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunction_identificationRule());
            	        }
                   		set(
                   			current, 
                   			"functionName",
                    		lv_functionName_1_0, 
                    		"function_identifier");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_identification"


    // $ANTLR start "entryRulefunction_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:693:1: entryRulefunction_identifier returns [EObject current=null] : iv_rulefunction_identifier= rulefunction_identifier EOF ;
    public final EObject entryRulefunction_identifier() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_identifier = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:694:2: (iv_rulefunction_identifier= rulefunction_identifier EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:695:2: iv_rulefunction_identifier= rulefunction_identifier EOF
            {
             newCompositeNode(grammarAccess.getFunction_identifierRule()); 
            pushFollow(FOLLOW_rulefunction_identifier_in_entryRulefunction_identifier1341);
            iv_rulefunction_identifier=rulefunction_identifier();

            state._fsp--;

             current =iv_rulefunction_identifier; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_identifier1351); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_identifier"


    // $ANTLR start "rulefunction_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:702:1: rulefunction_identifier returns [EObject current=null] : ( (lv_identifier_0_0= RULE_IDENTIFIER ) ) ;
    public final EObject rulefunction_identifier() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_0_0=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:705:28: ( ( (lv_identifier_0_0= RULE_IDENTIFIER ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:706:1: ( (lv_identifier_0_0= RULE_IDENTIFIER ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:706:1: ( (lv_identifier_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:707:1: (lv_identifier_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:707:1: (lv_identifier_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:708:3: lv_identifier_0_0= RULE_IDENTIFIER
            {
            lv_identifier_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulefunction_identifier1392); 

            			newLeafNode(lv_identifier_0_0, grammarAccess.getFunction_identifierAccess().getIdentifierIDENTIFIERTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFunction_identifierRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"identifier",
                    		lv_identifier_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_identifier"


    // $ANTLR start "entryRulefunction_body"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:732:1: entryRulefunction_body returns [EObject current=null] : iv_rulefunction_body= rulefunction_body EOF ;
    public final EObject entryRulefunction_body() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_body = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:733:2: (iv_rulefunction_body= rulefunction_body EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:734:2: iv_rulefunction_body= rulefunction_body EOF
            {
             newCompositeNode(grammarAccess.getFunction_bodyRule()); 
            pushFollow(FOLLOW_rulefunction_body_in_entryRulefunction_body1432);
            iv_rulefunction_body=rulefunction_body();

            state._fsp--;

             current =iv_rulefunction_body; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_body1442); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_body"


    // $ANTLR start "rulefunction_body"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:741:1: rulefunction_body returns [EObject current=null] : ( (lv_block_0_0= ruleblock ) ) ;
    public final EObject rulefunction_body() throws RecognitionException {
        EObject current = null;

        EObject lv_block_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:744:28: ( ( (lv_block_0_0= ruleblock ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:745:1: ( (lv_block_0_0= ruleblock ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:745:1: ( (lv_block_0_0= ruleblock ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:746:1: (lv_block_0_0= ruleblock )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:746:1: (lv_block_0_0= ruleblock )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:747:3: lv_block_0_0= ruleblock
            {
             
            	        newCompositeNode(grammarAccess.getFunction_bodyAccess().getBlockBlockParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleblock_in_rulefunction_body1487);
            lv_block_0_0=ruleblock();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunction_bodyRule());
            	        }
                   		set(
                   			current, 
                   			"block",
                    		lv_block_0_0, 
                    		"block");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_body"


    // $ANTLR start "entryRuleprocedure_declaration"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:771:1: entryRuleprocedure_declaration returns [EObject current=null] : iv_ruleprocedure_declaration= ruleprocedure_declaration EOF ;
    public final EObject entryRuleprocedure_declaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_declaration = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:772:2: (iv_ruleprocedure_declaration= ruleprocedure_declaration EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:773:2: iv_ruleprocedure_declaration= ruleprocedure_declaration EOF
            {
             newCompositeNode(grammarAccess.getProcedure_declarationRule()); 
            pushFollow(FOLLOW_ruleprocedure_declaration_in_entryRuleprocedure_declaration1522);
            iv_ruleprocedure_declaration=ruleprocedure_declaration();

            state._fsp--;

             current =iv_ruleprocedure_declaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_declaration1532); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_declaration"


    // $ANTLR start "ruleprocedure_declaration"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:780:1: ruleprocedure_declaration returns [EObject current=null] : ( ( (lv_heading_0_0= ruleprocedure_heading ) ) otherlv_1= ';' ( ( (lv_body_2_0= ruleprocedure_body ) ) | this_DIRECTIVE_3= RULE_DIRECTIVE ) ) ;
    public final EObject ruleprocedure_declaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token this_DIRECTIVE_3=null;
        EObject lv_heading_0_0 = null;

        EObject lv_body_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:783:28: ( ( ( (lv_heading_0_0= ruleprocedure_heading ) ) otherlv_1= ';' ( ( (lv_body_2_0= ruleprocedure_body ) ) | this_DIRECTIVE_3= RULE_DIRECTIVE ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:784:1: ( ( (lv_heading_0_0= ruleprocedure_heading ) ) otherlv_1= ';' ( ( (lv_body_2_0= ruleprocedure_body ) ) | this_DIRECTIVE_3= RULE_DIRECTIVE ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:784:1: ( ( (lv_heading_0_0= ruleprocedure_heading ) ) otherlv_1= ';' ( ( (lv_body_2_0= ruleprocedure_body ) ) | this_DIRECTIVE_3= RULE_DIRECTIVE ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:784:2: ( (lv_heading_0_0= ruleprocedure_heading ) ) otherlv_1= ';' ( ( (lv_body_2_0= ruleprocedure_body ) ) | this_DIRECTIVE_3= RULE_DIRECTIVE )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:784:2: ( (lv_heading_0_0= ruleprocedure_heading ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:785:1: (lv_heading_0_0= ruleprocedure_heading )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:785:1: (lv_heading_0_0= ruleprocedure_heading )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:786:3: lv_heading_0_0= ruleprocedure_heading
            {
             
            	        newCompositeNode(grammarAccess.getProcedure_declarationAccess().getHeadingProcedure_headingParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleprocedure_heading_in_ruleprocedure_declaration1578);
            lv_heading_0_0=ruleprocedure_heading();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProcedure_declarationRule());
            	        }
                   		set(
                   			current, 
                   			"heading",
                    		lv_heading_0_0, 
                    		"procedure_heading");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleprocedure_declaration1590); 

                	newLeafNode(otherlv_1, grammarAccess.getProcedure_declarationAccess().getSemicolonKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:806:1: ( ( (lv_body_2_0= ruleprocedure_body ) ) | this_DIRECTIVE_3= RULE_DIRECTIVE )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==EOF||(LA11_0>=26 && LA11_0<=27)||LA11_0==29||(LA11_0>=36 && LA11_0<=37)||LA11_0==39||LA11_0==46) ) {
                alt11=1;
            }
            else if ( (LA11_0==RULE_DIRECTIVE) ) {
                alt11=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:806:2: ( (lv_body_2_0= ruleprocedure_body ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:806:2: ( (lv_body_2_0= ruleprocedure_body ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:807:1: (lv_body_2_0= ruleprocedure_body )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:807:1: (lv_body_2_0= ruleprocedure_body )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:808:3: lv_body_2_0= ruleprocedure_body
                    {
                     
                    	        newCompositeNode(grammarAccess.getProcedure_declarationAccess().getBodyProcedure_bodyParserRuleCall_2_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleprocedure_body_in_ruleprocedure_declaration1612);
                    lv_body_2_0=ruleprocedure_body();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getProcedure_declarationRule());
                    	        }
                           		set(
                           			current, 
                           			"body",
                            		lv_body_2_0, 
                            		"procedure_body");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:825:6: this_DIRECTIVE_3= RULE_DIRECTIVE
                    {
                    this_DIRECTIVE_3=(Token)match(input,RULE_DIRECTIVE,FOLLOW_RULE_DIRECTIVE_in_ruleprocedure_declaration1629); 
                     
                        newLeafNode(this_DIRECTIVE_3, grammarAccess.getProcedure_declarationAccess().getDIRECTIVETerminalRuleCall_2_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_declaration"


    // $ANTLR start "entryRuleprocedure_body"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:837:1: entryRuleprocedure_body returns [EObject current=null] : iv_ruleprocedure_body= ruleprocedure_body EOF ;
    public final EObject entryRuleprocedure_body() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_body = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:838:2: (iv_ruleprocedure_body= ruleprocedure_body EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:839:2: iv_ruleprocedure_body= ruleprocedure_body EOF
            {
             newCompositeNode(grammarAccess.getProcedure_bodyRule()); 
            pushFollow(FOLLOW_ruleprocedure_body_in_entryRuleprocedure_body1665);
            iv_ruleprocedure_body=ruleprocedure_body();

            state._fsp--;

             current =iv_ruleprocedure_body; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_body1675); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_body"


    // $ANTLR start "ruleprocedure_body"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:846:1: ruleprocedure_body returns [EObject current=null] : ( (lv_block_0_0= ruleblock ) ) ;
    public final EObject ruleprocedure_body() throws RecognitionException {
        EObject current = null;

        EObject lv_block_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:849:28: ( ( (lv_block_0_0= ruleblock ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:850:1: ( (lv_block_0_0= ruleblock ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:850:1: ( (lv_block_0_0= ruleblock ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:851:1: (lv_block_0_0= ruleblock )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:851:1: (lv_block_0_0= ruleblock )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:852:3: lv_block_0_0= ruleblock
            {
             
            	        newCompositeNode(grammarAccess.getProcedure_bodyAccess().getBlockBlockParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleblock_in_ruleprocedure_body1720);
            lv_block_0_0=ruleblock();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProcedure_bodyRule());
            	        }
                   		set(
                   			current, 
                   			"block",
                    		lv_block_0_0, 
                    		"block");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_body"


    // $ANTLR start "entryRuleprocedure_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:878:1: entryRuleprocedure_identifier returns [EObject current=null] : iv_ruleprocedure_identifier= ruleprocedure_identifier EOF ;
    public final EObject entryRuleprocedure_identifier() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_identifier = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:879:2: (iv_ruleprocedure_identifier= ruleprocedure_identifier EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:880:2: iv_ruleprocedure_identifier= ruleprocedure_identifier EOF
            {
             newCompositeNode(grammarAccess.getProcedure_identifierRule()); 
            pushFollow(FOLLOW_ruleprocedure_identifier_in_entryRuleprocedure_identifier1757);
            iv_ruleprocedure_identifier=ruleprocedure_identifier();

            state._fsp--;

             current =iv_ruleprocedure_identifier; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_identifier1767); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_identifier"


    // $ANTLR start "ruleprocedure_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:887:1: ruleprocedure_identifier returns [EObject current=null] : ( (lv_identifier_0_0= RULE_IDENTIFIER ) ) ;
    public final EObject ruleprocedure_identifier() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_0_0=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:890:28: ( ( (lv_identifier_0_0= RULE_IDENTIFIER ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:891:1: ( (lv_identifier_0_0= RULE_IDENTIFIER ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:891:1: ( (lv_identifier_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:892:1: (lv_identifier_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:892:1: (lv_identifier_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:893:3: lv_identifier_0_0= RULE_IDENTIFIER
            {
            lv_identifier_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleprocedure_identifier1808); 

            			newLeafNode(lv_identifier_0_0, grammarAccess.getProcedure_identifierAccess().getIdentifierIDENTIFIERTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProcedure_identifierRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"identifier",
                    		lv_identifier_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_identifier"


    // $ANTLR start "entryRuleprocedure_heading"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:917:1: entryRuleprocedure_heading returns [EObject current=null] : iv_ruleprocedure_heading= ruleprocedure_heading EOF ;
    public final EObject entryRuleprocedure_heading() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_heading = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:918:2: (iv_ruleprocedure_heading= ruleprocedure_heading EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:919:2: iv_ruleprocedure_heading= ruleprocedure_heading EOF
            {
             newCompositeNode(grammarAccess.getProcedure_headingRule()); 
            pushFollow(FOLLOW_ruleprocedure_heading_in_entryRuleprocedure_heading1848);
            iv_ruleprocedure_heading=ruleprocedure_heading();

            state._fsp--;

             current =iv_ruleprocedure_heading; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_heading1858); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_heading"


    // $ANTLR start "ruleprocedure_heading"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:926:1: ruleprocedure_heading returns [EObject current=null] : (otherlv_0= 'procedure' ( (lv_procedureName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? ) ;
    public final EObject ruleprocedure_heading() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_procedureName_1_0=null;
        EObject lv_parameterList_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:929:28: ( (otherlv_0= 'procedure' ( (lv_procedureName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:930:1: (otherlv_0= 'procedure' ( (lv_procedureName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:930:1: (otherlv_0= 'procedure' ( (lv_procedureName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:930:3: otherlv_0= 'procedure' ( (lv_procedureName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )?
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleprocedure_heading1895); 

                	newLeafNode(otherlv_0, grammarAccess.getProcedure_headingAccess().getProcedureKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:934:1: ( (lv_procedureName_1_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:935:1: (lv_procedureName_1_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:935:1: (lv_procedureName_1_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:936:3: lv_procedureName_1_0= RULE_IDENTIFIER
            {
            lv_procedureName_1_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleprocedure_heading1912); 

            			newLeafNode(lv_procedureName_1_0, grammarAccess.getProcedure_headingAccess().getProcedureNameIDENTIFIERTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProcedure_headingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"procedureName",
                    		lv_procedureName_1_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:952:2: ( (lv_parameterList_2_0= ruleformal_parameter_list ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==22) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:953:1: (lv_parameterList_2_0= ruleformal_parameter_list )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:953:1: (lv_parameterList_2_0= ruleformal_parameter_list )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:954:3: lv_parameterList_2_0= ruleformal_parameter_list
                    {
                     
                    	        newCompositeNode(grammarAccess.getProcedure_headingAccess().getParameterListFormal_parameter_listParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleformal_parameter_list_in_ruleprocedure_heading1938);
                    lv_parameterList_2_0=ruleformal_parameter_list();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getProcedure_headingRule());
                    	        }
                           		set(
                           			current, 
                           			"parameterList",
                            		lv_parameterList_2_0, 
                            		"formal_parameter_list");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_heading"


    // $ANTLR start "entryRuleformal_parameter_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:978:1: entryRuleformal_parameter_list returns [EObject current=null] : iv_ruleformal_parameter_list= ruleformal_parameter_list EOF ;
    public final EObject entryRuleformal_parameter_list() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleformal_parameter_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:979:2: (iv_ruleformal_parameter_list= ruleformal_parameter_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:980:2: iv_ruleformal_parameter_list= ruleformal_parameter_list EOF
            {
             newCompositeNode(grammarAccess.getFormal_parameter_listRule()); 
            pushFollow(FOLLOW_ruleformal_parameter_list_in_entryRuleformal_parameter_list1975);
            iv_ruleformal_parameter_list=ruleformal_parameter_list();

            state._fsp--;

             current =iv_ruleformal_parameter_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleformal_parameter_list1985); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleformal_parameter_list"


    // $ANTLR start "ruleformal_parameter_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:987:1: ruleformal_parameter_list returns [EObject current=null] : (otherlv_0= '(' ( (lv_parameters_1_0= ruleformal_parameter_section ) ) (otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) ) )* otherlv_4= ')' ) ;
    public final EObject ruleformal_parameter_list() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_parameters_1_0 = null;

        EObject lv_parameters_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:990:28: ( (otherlv_0= '(' ( (lv_parameters_1_0= ruleformal_parameter_section ) ) (otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) ) )* otherlv_4= ')' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:991:1: (otherlv_0= '(' ( (lv_parameters_1_0= ruleformal_parameter_section ) ) (otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) ) )* otherlv_4= ')' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:991:1: (otherlv_0= '(' ( (lv_parameters_1_0= ruleformal_parameter_section ) ) (otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) ) )* otherlv_4= ')' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:991:3: otherlv_0= '(' ( (lv_parameters_1_0= ruleformal_parameter_section ) ) (otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) ) )* otherlv_4= ')'
            {
            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleformal_parameter_list2022); 

                	newLeafNode(otherlv_0, grammarAccess.getFormal_parameter_listAccess().getLeftParenthesisKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:995:1: ( (lv_parameters_1_0= ruleformal_parameter_section ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:996:1: (lv_parameters_1_0= ruleformal_parameter_section )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:996:1: (lv_parameters_1_0= ruleformal_parameter_section )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:997:3: lv_parameters_1_0= ruleformal_parameter_section
            {
             
            	        newCompositeNode(grammarAccess.getFormal_parameter_listAccess().getParametersFormal_parameter_sectionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleformal_parameter_section_in_ruleformal_parameter_list2043);
            lv_parameters_1_0=ruleformal_parameter_section();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFormal_parameter_listRule());
            	        }
                   		add(
                   			current, 
                   			"parameters",
                    		lv_parameters_1_0, 
                    		"formal_parameter_section");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1013:2: (otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) ) )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==24) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1013:4: otherlv_2= ';' ( (lv_parameters_3_0= ruleformal_parameter_section ) )
            	    {
            	    otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleformal_parameter_list2056); 

            	        	newLeafNode(otherlv_2, grammarAccess.getFormal_parameter_listAccess().getSemicolonKeyword_2_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1017:1: ( (lv_parameters_3_0= ruleformal_parameter_section ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1018:1: (lv_parameters_3_0= ruleformal_parameter_section )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1018:1: (lv_parameters_3_0= ruleformal_parameter_section )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1019:3: lv_parameters_3_0= ruleformal_parameter_section
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFormal_parameter_listAccess().getParametersFormal_parameter_sectionParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleformal_parameter_section_in_ruleformal_parameter_list2077);
            	    lv_parameters_3_0=ruleformal_parameter_section();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFormal_parameter_listRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"parameters",
            	            		lv_parameters_3_0, 
            	            		"formal_parameter_section");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleformal_parameter_list2091); 

                	newLeafNode(otherlv_4, grammarAccess.getFormal_parameter_listAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleformal_parameter_list"


    // $ANTLR start "entryRuleformal_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1047:1: entryRuleformal_parameter_section returns [EObject current=null] : iv_ruleformal_parameter_section= ruleformal_parameter_section EOF ;
    public final EObject entryRuleformal_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleformal_parameter_section = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1048:2: (iv_ruleformal_parameter_section= ruleformal_parameter_section EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1049:2: iv_ruleformal_parameter_section= ruleformal_parameter_section EOF
            {
             newCompositeNode(grammarAccess.getFormal_parameter_sectionRule()); 
            pushFollow(FOLLOW_ruleformal_parameter_section_in_entryRuleformal_parameter_section2127);
            iv_ruleformal_parameter_section=ruleformal_parameter_section();

            state._fsp--;

             current =iv_ruleformal_parameter_section; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleformal_parameter_section2137); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleformal_parameter_section"


    // $ANTLR start "ruleformal_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1056:1: ruleformal_parameter_section returns [EObject current=null] : (this_value_parameter_section_0= rulevalue_parameter_section | this_variable_parameter_section_1= rulevariable_parameter_section | this_procedure_parameter_section_2= ruleprocedure_parameter_section | this_function_parameter_section_3= rulefunction_parameter_section ) ;
    public final EObject ruleformal_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject this_value_parameter_section_0 = null;

        EObject this_variable_parameter_section_1 = null;

        EObject this_procedure_parameter_section_2 = null;

        EObject this_function_parameter_section_3 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1059:28: ( (this_value_parameter_section_0= rulevalue_parameter_section | this_variable_parameter_section_1= rulevariable_parameter_section | this_procedure_parameter_section_2= ruleprocedure_parameter_section | this_function_parameter_section_3= rulefunction_parameter_section ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1060:1: (this_value_parameter_section_0= rulevalue_parameter_section | this_variable_parameter_section_1= rulevariable_parameter_section | this_procedure_parameter_section_2= ruleprocedure_parameter_section | this_function_parameter_section_3= rulefunction_parameter_section )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1060:1: (this_value_parameter_section_0= rulevalue_parameter_section | this_variable_parameter_section_1= rulevariable_parameter_section | this_procedure_parameter_section_2= ruleprocedure_parameter_section | this_function_parameter_section_3= rulefunction_parameter_section )
            int alt14=4;
            switch ( input.LA(1) ) {
            case RULE_IDENTIFIER:
                {
                alt14=1;
                }
                break;
            case 29:
                {
                alt14=2;
                }
                break;
            case 27:
                {
                alt14=3;
                }
                break;
            case 26:
                {
                alt14=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }

            switch (alt14) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1061:5: this_value_parameter_section_0= rulevalue_parameter_section
                    {
                     
                            newCompositeNode(grammarAccess.getFormal_parameter_sectionAccess().getValue_parameter_sectionParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulevalue_parameter_section_in_ruleformal_parameter_section2184);
                    this_value_parameter_section_0=rulevalue_parameter_section();

                    state._fsp--;

                     
                            current = this_value_parameter_section_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1071:5: this_variable_parameter_section_1= rulevariable_parameter_section
                    {
                     
                            newCompositeNode(grammarAccess.getFormal_parameter_sectionAccess().getVariable_parameter_sectionParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulevariable_parameter_section_in_ruleformal_parameter_section2211);
                    this_variable_parameter_section_1=rulevariable_parameter_section();

                    state._fsp--;

                     
                            current = this_variable_parameter_section_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1081:5: this_procedure_parameter_section_2= ruleprocedure_parameter_section
                    {
                     
                            newCompositeNode(grammarAccess.getFormal_parameter_sectionAccess().getProcedure_parameter_sectionParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleprocedure_parameter_section_in_ruleformal_parameter_section2238);
                    this_procedure_parameter_section_2=ruleprocedure_parameter_section();

                    state._fsp--;

                     
                            current = this_procedure_parameter_section_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1091:5: this_function_parameter_section_3= rulefunction_parameter_section
                    {
                     
                            newCompositeNode(grammarAccess.getFormal_parameter_sectionAccess().getFunction_parameter_sectionParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_rulefunction_parameter_section_in_ruleformal_parameter_section2265);
                    this_function_parameter_section_3=rulefunction_parameter_section();

                    state._fsp--;

                     
                            current = this_function_parameter_section_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleformal_parameter_section"


    // $ANTLR start "entryRulefunction_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1107:1: entryRulefunction_parameter_section returns [EObject current=null] : iv_rulefunction_parameter_section= rulefunction_parameter_section EOF ;
    public final EObject entryRulefunction_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_parameter_section = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1108:2: (iv_rulefunction_parameter_section= rulefunction_parameter_section EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1109:2: iv_rulefunction_parameter_section= rulefunction_parameter_section EOF
            {
             newCompositeNode(grammarAccess.getFunction_parameter_sectionRule()); 
            pushFollow(FOLLOW_rulefunction_parameter_section_in_entryRulefunction_parameter_section2300);
            iv_rulefunction_parameter_section=rulefunction_parameter_section();

            state._fsp--;

             current =iv_rulefunction_parameter_section; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_parameter_section2310); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_parameter_section"


    // $ANTLR start "rulefunction_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1116:1: rulefunction_parameter_section returns [EObject current=null] : ( (lv_heading_0_0= rulefunction_heading ) ) ;
    public final EObject rulefunction_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject lv_heading_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1119:28: ( ( (lv_heading_0_0= rulefunction_heading ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1120:1: ( (lv_heading_0_0= rulefunction_heading ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1120:1: ( (lv_heading_0_0= rulefunction_heading ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1121:1: (lv_heading_0_0= rulefunction_heading )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1121:1: (lv_heading_0_0= rulefunction_heading )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1122:3: lv_heading_0_0= rulefunction_heading
            {
             
            	        newCompositeNode(grammarAccess.getFunction_parameter_sectionAccess().getHeadingFunction_headingParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_rulefunction_heading_in_rulefunction_parameter_section2355);
            lv_heading_0_0=rulefunction_heading();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunction_parameter_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"heading",
                    		lv_heading_0_0, 
                    		"function_heading");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_parameter_section"


    // $ANTLR start "entryRulefunction_heading"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1146:1: entryRulefunction_heading returns [EObject current=null] : iv_rulefunction_heading= rulefunction_heading EOF ;
    public final EObject entryRulefunction_heading() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_heading = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1147:2: (iv_rulefunction_heading= rulefunction_heading EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1148:2: iv_rulefunction_heading= rulefunction_heading EOF
            {
             newCompositeNode(grammarAccess.getFunction_headingRule()); 
            pushFollow(FOLLOW_rulefunction_heading_in_entryRulefunction_heading2390);
            iv_rulefunction_heading=rulefunction_heading();

            state._fsp--;

             current =iv_rulefunction_heading; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_heading2400); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_heading"


    // $ANTLR start "rulefunction_heading"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1155:1: rulefunction_heading returns [EObject current=null] : (otherlv_0= 'function' ( (lv_functionName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? otherlv_3= ':' ( (lv_resultType_4_0= ruleresult_type ) ) ) ;
    public final EObject rulefunction_heading() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_functionName_1_0=null;
        Token otherlv_3=null;
        EObject lv_parameterList_2_0 = null;

        EObject lv_resultType_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1158:28: ( (otherlv_0= 'function' ( (lv_functionName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? otherlv_3= ':' ( (lv_resultType_4_0= ruleresult_type ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1159:1: (otherlv_0= 'function' ( (lv_functionName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? otherlv_3= ':' ( (lv_resultType_4_0= ruleresult_type ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1159:1: (otherlv_0= 'function' ( (lv_functionName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? otherlv_3= ':' ( (lv_resultType_4_0= ruleresult_type ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1159:3: otherlv_0= 'function' ( (lv_functionName_1_0= RULE_IDENTIFIER ) ) ( (lv_parameterList_2_0= ruleformal_parameter_list ) )? otherlv_3= ':' ( (lv_resultType_4_0= ruleresult_type ) )
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_rulefunction_heading2437); 

                	newLeafNode(otherlv_0, grammarAccess.getFunction_headingAccess().getFunctionKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1163:1: ( (lv_functionName_1_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1164:1: (lv_functionName_1_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1164:1: (lv_functionName_1_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1165:3: lv_functionName_1_0= RULE_IDENTIFIER
            {
            lv_functionName_1_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulefunction_heading2454); 

            			newLeafNode(lv_functionName_1_0, grammarAccess.getFunction_headingAccess().getFunctionNameIDENTIFIERTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFunction_headingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"functionName",
                    		lv_functionName_1_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1181:2: ( (lv_parameterList_2_0= ruleformal_parameter_list ) )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==22) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1182:1: (lv_parameterList_2_0= ruleformal_parameter_list )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1182:1: (lv_parameterList_2_0= ruleformal_parameter_list )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1183:3: lv_parameterList_2_0= ruleformal_parameter_list
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunction_headingAccess().getParameterListFormal_parameter_listParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleformal_parameter_list_in_rulefunction_heading2480);
                    lv_parameterList_2_0=ruleformal_parameter_list();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunction_headingRule());
                    	        }
                           		set(
                           			current, 
                           			"parameterList",
                            		lv_parameterList_2_0, 
                            		"formal_parameter_list");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,28,FOLLOW_28_in_rulefunction_heading2493); 

                	newLeafNode(otherlv_3, grammarAccess.getFunction_headingAccess().getColonKeyword_3());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1203:1: ( (lv_resultType_4_0= ruleresult_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1204:1: (lv_resultType_4_0= ruleresult_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1204:1: (lv_resultType_4_0= ruleresult_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1205:3: lv_resultType_4_0= ruleresult_type
            {
             
            	        newCompositeNode(grammarAccess.getFunction_headingAccess().getResultTypeResult_typeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleresult_type_in_rulefunction_heading2514);
            lv_resultType_4_0=ruleresult_type();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunction_headingRule());
            	        }
                   		set(
                   			current, 
                   			"resultType",
                    		lv_resultType_4_0, 
                    		"result_type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_heading"


    // $ANTLR start "entryRuleresult_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1229:1: entryRuleresult_type returns [EObject current=null] : iv_ruleresult_type= ruleresult_type EOF ;
    public final EObject entryRuleresult_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleresult_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1230:2: (iv_ruleresult_type= ruleresult_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1231:2: iv_ruleresult_type= ruleresult_type EOF
            {
             newCompositeNode(grammarAccess.getResult_typeRule()); 
            pushFollow(FOLLOW_ruleresult_type_in_entryRuleresult_type2550);
            iv_ruleresult_type=ruleresult_type();

            state._fsp--;

             current =iv_ruleresult_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleresult_type2560); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleresult_type"


    // $ANTLR start "ruleresult_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1238:1: ruleresult_type returns [EObject current=null] : this_type_identifier_0= ruletype_identifier ;
    public final EObject ruleresult_type() throws RecognitionException {
        EObject current = null;

        EObject this_type_identifier_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1241:28: (this_type_identifier_0= ruletype_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1243:5: this_type_identifier_0= ruletype_identifier
            {
             
                    newCompositeNode(grammarAccess.getResult_typeAccess().getType_identifierParserRuleCall()); 
                
            pushFollow(FOLLOW_ruletype_identifier_in_ruleresult_type2606);
            this_type_identifier_0=ruletype_identifier();

            state._fsp--;

             
                    current = this_type_identifier_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleresult_type"


    // $ANTLR start "entryRuleprocedure_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1259:1: entryRuleprocedure_parameter_section returns [EObject current=null] : iv_ruleprocedure_parameter_section= ruleprocedure_parameter_section EOF ;
    public final EObject entryRuleprocedure_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_parameter_section = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1260:2: (iv_ruleprocedure_parameter_section= ruleprocedure_parameter_section EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1261:2: iv_ruleprocedure_parameter_section= ruleprocedure_parameter_section EOF
            {
             newCompositeNode(grammarAccess.getProcedure_parameter_sectionRule()); 
            pushFollow(FOLLOW_ruleprocedure_parameter_section_in_entryRuleprocedure_parameter_section2640);
            iv_ruleprocedure_parameter_section=ruleprocedure_parameter_section();

            state._fsp--;

             current =iv_ruleprocedure_parameter_section; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_parameter_section2650); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_parameter_section"


    // $ANTLR start "ruleprocedure_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1268:1: ruleprocedure_parameter_section returns [EObject current=null] : ( (lv_heading_0_0= ruleprocedure_heading ) ) ;
    public final EObject ruleprocedure_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject lv_heading_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1271:28: ( ( (lv_heading_0_0= ruleprocedure_heading ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1272:1: ( (lv_heading_0_0= ruleprocedure_heading ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1272:1: ( (lv_heading_0_0= ruleprocedure_heading ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1273:1: (lv_heading_0_0= ruleprocedure_heading )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1273:1: (lv_heading_0_0= ruleprocedure_heading )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1274:3: lv_heading_0_0= ruleprocedure_heading
            {
             
            	        newCompositeNode(grammarAccess.getProcedure_parameter_sectionAccess().getHeadingProcedure_headingParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleprocedure_heading_in_ruleprocedure_parameter_section2695);
            lv_heading_0_0=ruleprocedure_heading();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProcedure_parameter_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"heading",
                    		lv_heading_0_0, 
                    		"procedure_heading");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_parameter_section"


    // $ANTLR start "entryRulevariable_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1298:1: entryRulevariable_parameter_section returns [EObject current=null] : iv_rulevariable_parameter_section= rulevariable_parameter_section EOF ;
    public final EObject entryRulevariable_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariable_parameter_section = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1299:2: (iv_rulevariable_parameter_section= rulevariable_parameter_section EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1300:2: iv_rulevariable_parameter_section= rulevariable_parameter_section EOF
            {
             newCompositeNode(grammarAccess.getVariable_parameter_sectionRule()); 
            pushFollow(FOLLOW_rulevariable_parameter_section_in_entryRulevariable_parameter_section2730);
            iv_rulevariable_parameter_section=rulevariable_parameter_section();

            state._fsp--;

             current =iv_rulevariable_parameter_section; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariable_parameter_section2740); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariable_parameter_section"


    // $ANTLR start "rulevariable_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1307:1: rulevariable_parameter_section returns [EObject current=null] : (otherlv_0= 'var' ( (lv_identifierList_1_0= ruleidentifier_list ) ) otherlv_2= ':' ( (lv_type_3_0= ruleparameter_type ) ) ) ;
    public final EObject rulevariable_parameter_section() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_identifierList_1_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1310:28: ( (otherlv_0= 'var' ( (lv_identifierList_1_0= ruleidentifier_list ) ) otherlv_2= ':' ( (lv_type_3_0= ruleparameter_type ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1311:1: (otherlv_0= 'var' ( (lv_identifierList_1_0= ruleidentifier_list ) ) otherlv_2= ':' ( (lv_type_3_0= ruleparameter_type ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1311:1: (otherlv_0= 'var' ( (lv_identifierList_1_0= ruleidentifier_list ) ) otherlv_2= ':' ( (lv_type_3_0= ruleparameter_type ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1311:3: otherlv_0= 'var' ( (lv_identifierList_1_0= ruleidentifier_list ) ) otherlv_2= ':' ( (lv_type_3_0= ruleparameter_type ) )
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_rulevariable_parameter_section2777); 

                	newLeafNode(otherlv_0, grammarAccess.getVariable_parameter_sectionAccess().getVarKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1315:1: ( (lv_identifierList_1_0= ruleidentifier_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1316:1: (lv_identifierList_1_0= ruleidentifier_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1316:1: (lv_identifierList_1_0= ruleidentifier_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1317:3: lv_identifierList_1_0= ruleidentifier_list
            {
             
            	        newCompositeNode(grammarAccess.getVariable_parameter_sectionAccess().getIdentifierListIdentifier_listParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleidentifier_list_in_rulevariable_parameter_section2798);
            lv_identifierList_1_0=ruleidentifier_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariable_parameter_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"identifierList",
                    		lv_identifierList_1_0, 
                    		"identifier_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_rulevariable_parameter_section2810); 

                	newLeafNode(otherlv_2, grammarAccess.getVariable_parameter_sectionAccess().getColonKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1337:1: ( (lv_type_3_0= ruleparameter_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1338:1: (lv_type_3_0= ruleparameter_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1338:1: (lv_type_3_0= ruleparameter_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1339:3: lv_type_3_0= ruleparameter_type
            {
             
            	        newCompositeNode(grammarAccess.getVariable_parameter_sectionAccess().getTypeParameter_typeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleparameter_type_in_rulevariable_parameter_section2831);
            lv_type_3_0=ruleparameter_type();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariable_parameter_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_3_0, 
                    		"parameter_type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariable_parameter_section"


    // $ANTLR start "entryRulevalue_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1363:1: entryRulevalue_parameter_section returns [EObject current=null] : iv_rulevalue_parameter_section= rulevalue_parameter_section EOF ;
    public final EObject entryRulevalue_parameter_section() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevalue_parameter_section = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1364:2: (iv_rulevalue_parameter_section= rulevalue_parameter_section EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1365:2: iv_rulevalue_parameter_section= rulevalue_parameter_section EOF
            {
             newCompositeNode(grammarAccess.getValue_parameter_sectionRule()); 
            pushFollow(FOLLOW_rulevalue_parameter_section_in_entryRulevalue_parameter_section2867);
            iv_rulevalue_parameter_section=rulevalue_parameter_section();

            state._fsp--;

             current =iv_rulevalue_parameter_section; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevalue_parameter_section2877); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevalue_parameter_section"


    // $ANTLR start "rulevalue_parameter_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1372:1: rulevalue_parameter_section returns [EObject current=null] : ( ( (lv_identifierList_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruleparameter_type ) ) ) ;
    public final EObject rulevalue_parameter_section() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_identifierList_0_0 = null;

        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1375:28: ( ( ( (lv_identifierList_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruleparameter_type ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1376:1: ( ( (lv_identifierList_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruleparameter_type ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1376:1: ( ( (lv_identifierList_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruleparameter_type ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1376:2: ( (lv_identifierList_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruleparameter_type ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1376:2: ( (lv_identifierList_0_0= ruleidentifier_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1377:1: (lv_identifierList_0_0= ruleidentifier_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1377:1: (lv_identifierList_0_0= ruleidentifier_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1378:3: lv_identifierList_0_0= ruleidentifier_list
            {
             
            	        newCompositeNode(grammarAccess.getValue_parameter_sectionAccess().getIdentifierListIdentifier_listParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleidentifier_list_in_rulevalue_parameter_section2923);
            lv_identifierList_0_0=ruleidentifier_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValue_parameter_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"identifierList",
                    		lv_identifierList_0_0, 
                    		"identifier_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulevalue_parameter_section2935); 

                	newLeafNode(otherlv_1, grammarAccess.getValue_parameter_sectionAccess().getColonKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1398:1: ( (lv_type_2_0= ruleparameter_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1399:1: (lv_type_2_0= ruleparameter_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1399:1: (lv_type_2_0= ruleparameter_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1400:3: lv_type_2_0= ruleparameter_type
            {
             
            	        newCompositeNode(grammarAccess.getValue_parameter_sectionAccess().getTypeParameter_typeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleparameter_type_in_rulevalue_parameter_section2956);
            lv_type_2_0=ruleparameter_type();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValue_parameter_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"parameter_type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevalue_parameter_section"


    // $ANTLR start "entryRuleparameter_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1424:1: entryRuleparameter_type returns [EObject current=null] : iv_ruleparameter_type= ruleparameter_type EOF ;
    public final EObject entryRuleparameter_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleparameter_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1425:2: (iv_ruleparameter_type= ruleparameter_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1426:2: iv_ruleparameter_type= ruleparameter_type EOF
            {
             newCompositeNode(grammarAccess.getParameter_typeRule()); 
            pushFollow(FOLLOW_ruleparameter_type_in_entryRuleparameter_type2992);
            iv_ruleparameter_type=ruleparameter_type();

            state._fsp--;

             current =iv_ruleparameter_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleparameter_type3002); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleparameter_type"


    // $ANTLR start "ruleparameter_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1433:1: ruleparameter_type returns [EObject current=null] : (this_type_identifier_0= ruletype_identifier | this_conformant_array_schema_1= ruleconformant_array_schema ) ;
    public final EObject ruleparameter_type() throws RecognitionException {
        EObject current = null;

        EObject this_type_identifier_0 = null;

        EObject this_conformant_array_schema_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1436:28: ( (this_type_identifier_0= ruletype_identifier | this_conformant_array_schema_1= ruleconformant_array_schema ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1437:1: (this_type_identifier_0= ruletype_identifier | this_conformant_array_schema_1= ruleconformant_array_schema )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1437:1: (this_type_identifier_0= ruletype_identifier | this_conformant_array_schema_1= ruleconformant_array_schema )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==RULE_IDENTIFIER) ) {
                alt16=1;
            }
            else if ( (LA16_0==30||LA16_0==34) ) {
                alt16=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1438:5: this_type_identifier_0= ruletype_identifier
                    {
                     
                            newCompositeNode(grammarAccess.getParameter_typeAccess().getType_identifierParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruletype_identifier_in_ruleparameter_type3049);
                    this_type_identifier_0=ruletype_identifier();

                    state._fsp--;

                     
                            current = this_type_identifier_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1448:5: this_conformant_array_schema_1= ruleconformant_array_schema
                    {
                     
                            newCompositeNode(grammarAccess.getParameter_typeAccess().getConformant_array_schemaParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleconformant_array_schema_in_ruleparameter_type3076);
                    this_conformant_array_schema_1=ruleconformant_array_schema();

                    state._fsp--;

                     
                            current = this_conformant_array_schema_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleparameter_type"


    // $ANTLR start "entryRuleconformant_array_schema"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1464:1: entryRuleconformant_array_schema returns [EObject current=null] : iv_ruleconformant_array_schema= ruleconformant_array_schema EOF ;
    public final EObject entryRuleconformant_array_schema() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleconformant_array_schema = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1465:2: (iv_ruleconformant_array_schema= ruleconformant_array_schema EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1466:2: iv_ruleconformant_array_schema= ruleconformant_array_schema EOF
            {
             newCompositeNode(grammarAccess.getConformant_array_schemaRule()); 
            pushFollow(FOLLOW_ruleconformant_array_schema_in_entryRuleconformant_array_schema3111);
            iv_ruleconformant_array_schema=ruleconformant_array_schema();

            state._fsp--;

             current =iv_ruleconformant_array_schema; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleconformant_array_schema3121); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleconformant_array_schema"


    // $ANTLR start "ruleconformant_array_schema"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1473:1: ruleconformant_array_schema returns [EObject current=null] : (this_packed_conformant_array_schema_0= rulepacked_conformant_array_schema | this_unpacked_conformant_array_schema_1= ruleunpacked_conformant_array_schema ) ;
    public final EObject ruleconformant_array_schema() throws RecognitionException {
        EObject current = null;

        EObject this_packed_conformant_array_schema_0 = null;

        EObject this_unpacked_conformant_array_schema_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1476:28: ( (this_packed_conformant_array_schema_0= rulepacked_conformant_array_schema | this_unpacked_conformant_array_schema_1= ruleunpacked_conformant_array_schema ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1477:1: (this_packed_conformant_array_schema_0= rulepacked_conformant_array_schema | this_unpacked_conformant_array_schema_1= ruleunpacked_conformant_array_schema )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1477:1: (this_packed_conformant_array_schema_0= rulepacked_conformant_array_schema | this_unpacked_conformant_array_schema_1= ruleunpacked_conformant_array_schema )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==34) ) {
                alt17=1;
            }
            else if ( (LA17_0==30) ) {
                alt17=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1478:5: this_packed_conformant_array_schema_0= rulepacked_conformant_array_schema
                    {
                     
                            newCompositeNode(grammarAccess.getConformant_array_schemaAccess().getPacked_conformant_array_schemaParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulepacked_conformant_array_schema_in_ruleconformant_array_schema3168);
                    this_packed_conformant_array_schema_0=rulepacked_conformant_array_schema();

                    state._fsp--;

                     
                            current = this_packed_conformant_array_schema_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1488:5: this_unpacked_conformant_array_schema_1= ruleunpacked_conformant_array_schema
                    {
                     
                            newCompositeNode(grammarAccess.getConformant_array_schemaAccess().getUnpacked_conformant_array_schemaParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleunpacked_conformant_array_schema_in_ruleconformant_array_schema3195);
                    this_unpacked_conformant_array_schema_1=ruleunpacked_conformant_array_schema();

                    state._fsp--;

                     
                            current = this_unpacked_conformant_array_schema_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleconformant_array_schema"


    // $ANTLR start "entryRuleunpacked_conformant_array_schema"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1504:1: entryRuleunpacked_conformant_array_schema returns [EObject current=null] : iv_ruleunpacked_conformant_array_schema= ruleunpacked_conformant_array_schema EOF ;
    public final EObject entryRuleunpacked_conformant_array_schema() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleunpacked_conformant_array_schema = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1505:2: (iv_ruleunpacked_conformant_array_schema= ruleunpacked_conformant_array_schema EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1506:2: iv_ruleunpacked_conformant_array_schema= ruleunpacked_conformant_array_schema EOF
            {
             newCompositeNode(grammarAccess.getUnpacked_conformant_array_schemaRule()); 
            pushFollow(FOLLOW_ruleunpacked_conformant_array_schema_in_entryRuleunpacked_conformant_array_schema3230);
            iv_ruleunpacked_conformant_array_schema=ruleunpacked_conformant_array_schema();

            state._fsp--;

             current =iv_ruleunpacked_conformant_array_schema; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleunpacked_conformant_array_schema3240); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleunpacked_conformant_array_schema"


    // $ANTLR start "ruleunpacked_conformant_array_schema"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1513:1: ruleunpacked_conformant_array_schema returns [EObject current=null] : (otherlv_0= 'array' otherlv_1= '[' ( (lv_boundEspecifications_2_0= rulebound_especification ) ) (otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) ) )* otherlv_5= ']' otherlv_6= 'of' ( ( (lv_typeIdentifier_7_0= ruletype_identifier ) ) | ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) ) ) ) ;
    public final EObject ruleunpacked_conformant_array_schema() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_boundEspecifications_2_0 = null;

        EObject lv_boundEspecifications_4_0 = null;

        EObject lv_typeIdentifier_7_0 = null;

        EObject lv_conformantArraySchema_8_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1516:28: ( (otherlv_0= 'array' otherlv_1= '[' ( (lv_boundEspecifications_2_0= rulebound_especification ) ) (otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) ) )* otherlv_5= ']' otherlv_6= 'of' ( ( (lv_typeIdentifier_7_0= ruletype_identifier ) ) | ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1517:1: (otherlv_0= 'array' otherlv_1= '[' ( (lv_boundEspecifications_2_0= rulebound_especification ) ) (otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) ) )* otherlv_5= ']' otherlv_6= 'of' ( ( (lv_typeIdentifier_7_0= ruletype_identifier ) ) | ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1517:1: (otherlv_0= 'array' otherlv_1= '[' ( (lv_boundEspecifications_2_0= rulebound_especification ) ) (otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) ) )* otherlv_5= ']' otherlv_6= 'of' ( ( (lv_typeIdentifier_7_0= ruletype_identifier ) ) | ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1517:3: otherlv_0= 'array' otherlv_1= '[' ( (lv_boundEspecifications_2_0= rulebound_especification ) ) (otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) ) )* otherlv_5= ']' otherlv_6= 'of' ( ( (lv_typeIdentifier_7_0= ruletype_identifier ) ) | ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) ) )
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleunpacked_conformant_array_schema3277); 

                	newLeafNode(otherlv_0, grammarAccess.getUnpacked_conformant_array_schemaAccess().getArrayKeyword_0());
                
            otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleunpacked_conformant_array_schema3289); 

                	newLeafNode(otherlv_1, grammarAccess.getUnpacked_conformant_array_schemaAccess().getLeftSquareBracketKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1525:1: ( (lv_boundEspecifications_2_0= rulebound_especification ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1526:1: (lv_boundEspecifications_2_0= rulebound_especification )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1526:1: (lv_boundEspecifications_2_0= rulebound_especification )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1527:3: lv_boundEspecifications_2_0= rulebound_especification
            {
             
            	        newCompositeNode(grammarAccess.getUnpacked_conformant_array_schemaAccess().getBoundEspecificationsBound_especificationParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_rulebound_especification_in_ruleunpacked_conformant_array_schema3310);
            lv_boundEspecifications_2_0=rulebound_especification();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getUnpacked_conformant_array_schemaRule());
            	        }
                   		add(
                   			current, 
                   			"boundEspecifications",
                    		lv_boundEspecifications_2_0, 
                    		"bound_especification");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1543:2: (otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==24) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1543:4: otherlv_3= ';' ( (lv_boundEspecifications_4_0= rulebound_especification ) )
            	    {
            	    otherlv_3=(Token)match(input,24,FOLLOW_24_in_ruleunpacked_conformant_array_schema3323); 

            	        	newLeafNode(otherlv_3, grammarAccess.getUnpacked_conformant_array_schemaAccess().getSemicolonKeyword_3_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1547:1: ( (lv_boundEspecifications_4_0= rulebound_especification ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1548:1: (lv_boundEspecifications_4_0= rulebound_especification )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1548:1: (lv_boundEspecifications_4_0= rulebound_especification )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1549:3: lv_boundEspecifications_4_0= rulebound_especification
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUnpacked_conformant_array_schemaAccess().getBoundEspecificationsBound_especificationParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulebound_especification_in_ruleunpacked_conformant_array_schema3344);
            	    lv_boundEspecifications_4_0=rulebound_especification();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUnpacked_conformant_array_schemaRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"boundEspecifications",
            	            		lv_boundEspecifications_4_0, 
            	            		"bound_especification");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            otherlv_5=(Token)match(input,32,FOLLOW_32_in_ruleunpacked_conformant_array_schema3358); 

                	newLeafNode(otherlv_5, grammarAccess.getUnpacked_conformant_array_schemaAccess().getRightSquareBracketKeyword_4());
                
            otherlv_6=(Token)match(input,33,FOLLOW_33_in_ruleunpacked_conformant_array_schema3370); 

                	newLeafNode(otherlv_6, grammarAccess.getUnpacked_conformant_array_schemaAccess().getOfKeyword_5());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1573:1: ( ( (lv_typeIdentifier_7_0= ruletype_identifier ) ) | ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) ) )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==RULE_IDENTIFIER) ) {
                alt19=1;
            }
            else if ( (LA19_0==30||LA19_0==34) ) {
                alt19=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1573:2: ( (lv_typeIdentifier_7_0= ruletype_identifier ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1573:2: ( (lv_typeIdentifier_7_0= ruletype_identifier ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1574:1: (lv_typeIdentifier_7_0= ruletype_identifier )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1574:1: (lv_typeIdentifier_7_0= ruletype_identifier )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1575:3: lv_typeIdentifier_7_0= ruletype_identifier
                    {
                     
                    	        newCompositeNode(grammarAccess.getUnpacked_conformant_array_schemaAccess().getTypeIdentifierType_identifierParserRuleCall_6_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruletype_identifier_in_ruleunpacked_conformant_array_schema3392);
                    lv_typeIdentifier_7_0=ruletype_identifier();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUnpacked_conformant_array_schemaRule());
                    	        }
                           		set(
                           			current, 
                           			"typeIdentifier",
                            		lv_typeIdentifier_7_0, 
                            		"type_identifier");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1592:6: ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1592:6: ( (lv_conformantArraySchema_8_0= ruleconformant_array_schema ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1593:1: (lv_conformantArraySchema_8_0= ruleconformant_array_schema )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1593:1: (lv_conformantArraySchema_8_0= ruleconformant_array_schema )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1594:3: lv_conformantArraySchema_8_0= ruleconformant_array_schema
                    {
                     
                    	        newCompositeNode(grammarAccess.getUnpacked_conformant_array_schemaAccess().getConformantArraySchemaConformant_array_schemaParserRuleCall_6_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleconformant_array_schema_in_ruleunpacked_conformant_array_schema3419);
                    lv_conformantArraySchema_8_0=ruleconformant_array_schema();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUnpacked_conformant_array_schemaRule());
                    	        }
                           		set(
                           			current, 
                           			"conformantArraySchema",
                            		lv_conformantArraySchema_8_0, 
                            		"conformant_array_schema");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleunpacked_conformant_array_schema"


    // $ANTLR start "entryRulepacked_conformant_array_schema"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1618:1: entryRulepacked_conformant_array_schema returns [EObject current=null] : iv_rulepacked_conformant_array_schema= rulepacked_conformant_array_schema EOF ;
    public final EObject entryRulepacked_conformant_array_schema() throws RecognitionException {
        EObject current = null;

        EObject iv_rulepacked_conformant_array_schema = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1619:2: (iv_rulepacked_conformant_array_schema= rulepacked_conformant_array_schema EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1620:2: iv_rulepacked_conformant_array_schema= rulepacked_conformant_array_schema EOF
            {
             newCompositeNode(grammarAccess.getPacked_conformant_array_schemaRule()); 
            pushFollow(FOLLOW_rulepacked_conformant_array_schema_in_entryRulepacked_conformant_array_schema3456);
            iv_rulepacked_conformant_array_schema=rulepacked_conformant_array_schema();

            state._fsp--;

             current =iv_rulepacked_conformant_array_schema; 
            match(input,EOF,FOLLOW_EOF_in_entryRulepacked_conformant_array_schema3466); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulepacked_conformant_array_schema"


    // $ANTLR start "rulepacked_conformant_array_schema"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1627:1: rulepacked_conformant_array_schema returns [EObject current=null] : (otherlv_0= 'packed' otherlv_1= 'array' otherlv_2= '[' ( (lv_boundEspecification_3_0= rulebound_especification ) ) otherlv_4= ']' otherlv_5= 'of' ( (lv_typeIdentifier_6_0= ruletype_identifier ) ) ) ;
    public final EObject rulepacked_conformant_array_schema() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject lv_boundEspecification_3_0 = null;

        EObject lv_typeIdentifier_6_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1630:28: ( (otherlv_0= 'packed' otherlv_1= 'array' otherlv_2= '[' ( (lv_boundEspecification_3_0= rulebound_especification ) ) otherlv_4= ']' otherlv_5= 'of' ( (lv_typeIdentifier_6_0= ruletype_identifier ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1631:1: (otherlv_0= 'packed' otherlv_1= 'array' otherlv_2= '[' ( (lv_boundEspecification_3_0= rulebound_especification ) ) otherlv_4= ']' otherlv_5= 'of' ( (lv_typeIdentifier_6_0= ruletype_identifier ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1631:1: (otherlv_0= 'packed' otherlv_1= 'array' otherlv_2= '[' ( (lv_boundEspecification_3_0= rulebound_especification ) ) otherlv_4= ']' otherlv_5= 'of' ( (lv_typeIdentifier_6_0= ruletype_identifier ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1631:3: otherlv_0= 'packed' otherlv_1= 'array' otherlv_2= '[' ( (lv_boundEspecification_3_0= rulebound_especification ) ) otherlv_4= ']' otherlv_5= 'of' ( (lv_typeIdentifier_6_0= ruletype_identifier ) )
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_rulepacked_conformant_array_schema3503); 

                	newLeafNode(otherlv_0, grammarAccess.getPacked_conformant_array_schemaAccess().getPackedKeyword_0());
                
            otherlv_1=(Token)match(input,30,FOLLOW_30_in_rulepacked_conformant_array_schema3515); 

                	newLeafNode(otherlv_1, grammarAccess.getPacked_conformant_array_schemaAccess().getArrayKeyword_1());
                
            otherlv_2=(Token)match(input,31,FOLLOW_31_in_rulepacked_conformant_array_schema3527); 

                	newLeafNode(otherlv_2, grammarAccess.getPacked_conformant_array_schemaAccess().getLeftSquareBracketKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1643:1: ( (lv_boundEspecification_3_0= rulebound_especification ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1644:1: (lv_boundEspecification_3_0= rulebound_especification )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1644:1: (lv_boundEspecification_3_0= rulebound_especification )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1645:3: lv_boundEspecification_3_0= rulebound_especification
            {
             
            	        newCompositeNode(grammarAccess.getPacked_conformant_array_schemaAccess().getBoundEspecificationBound_especificationParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_rulebound_especification_in_rulepacked_conformant_array_schema3548);
            lv_boundEspecification_3_0=rulebound_especification();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPacked_conformant_array_schemaRule());
            	        }
                   		set(
                   			current, 
                   			"boundEspecification",
                    		lv_boundEspecification_3_0, 
                    		"bound_especification");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,32,FOLLOW_32_in_rulepacked_conformant_array_schema3560); 

                	newLeafNode(otherlv_4, grammarAccess.getPacked_conformant_array_schemaAccess().getRightSquareBracketKeyword_4());
                
            otherlv_5=(Token)match(input,33,FOLLOW_33_in_rulepacked_conformant_array_schema3572); 

                	newLeafNode(otherlv_5, grammarAccess.getPacked_conformant_array_schemaAccess().getOfKeyword_5());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1669:1: ( (lv_typeIdentifier_6_0= ruletype_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1670:1: (lv_typeIdentifier_6_0= ruletype_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1670:1: (lv_typeIdentifier_6_0= ruletype_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1671:3: lv_typeIdentifier_6_0= ruletype_identifier
            {
             
            	        newCompositeNode(grammarAccess.getPacked_conformant_array_schemaAccess().getTypeIdentifierType_identifierParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruletype_identifier_in_rulepacked_conformant_array_schema3593);
            lv_typeIdentifier_6_0=ruletype_identifier();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPacked_conformant_array_schemaRule());
            	        }
                   		set(
                   			current, 
                   			"typeIdentifier",
                    		lv_typeIdentifier_6_0, 
                    		"type_identifier");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulepacked_conformant_array_schema"


    // $ANTLR start "entryRulebound_especification"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1695:1: entryRulebound_especification returns [EObject current=null] : iv_rulebound_especification= rulebound_especification EOF ;
    public final EObject entryRulebound_especification() throws RecognitionException {
        EObject current = null;

        EObject iv_rulebound_especification = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1696:2: (iv_rulebound_especification= rulebound_especification EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1697:2: iv_rulebound_especification= rulebound_especification EOF
            {
             newCompositeNode(grammarAccess.getBound_especificationRule()); 
            pushFollow(FOLLOW_rulebound_especification_in_entryRulebound_especification3629);
            iv_rulebound_especification=rulebound_especification();

            state._fsp--;

             current =iv_rulebound_especification; 
            match(input,EOF,FOLLOW_EOF_in_entryRulebound_especification3639); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulebound_especification"


    // $ANTLR start "rulebound_especification"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1704:1: rulebound_especification returns [EObject current=null] : (this_IDENTIFIER_0= RULE_IDENTIFIER otherlv_1= '..' this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= ':' this_ordinal_type_identifier_4= ruleordinal_type_identifier ) ;
    public final EObject rulebound_especification() throws RecognitionException {
        EObject current = null;

        Token this_IDENTIFIER_0=null;
        Token otherlv_1=null;
        Token this_IDENTIFIER_2=null;
        Token otherlv_3=null;
        EObject this_ordinal_type_identifier_4 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1707:28: ( (this_IDENTIFIER_0= RULE_IDENTIFIER otherlv_1= '..' this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= ':' this_ordinal_type_identifier_4= ruleordinal_type_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1708:1: (this_IDENTIFIER_0= RULE_IDENTIFIER otherlv_1= '..' this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= ':' this_ordinal_type_identifier_4= ruleordinal_type_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1708:1: (this_IDENTIFIER_0= RULE_IDENTIFIER otherlv_1= '..' this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= ':' this_ordinal_type_identifier_4= ruleordinal_type_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1708:2: this_IDENTIFIER_0= RULE_IDENTIFIER otherlv_1= '..' this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= ':' this_ordinal_type_identifier_4= ruleordinal_type_identifier
            {
            this_IDENTIFIER_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulebound_especification3675); 
             
                newLeafNode(this_IDENTIFIER_0, grammarAccess.getBound_especificationAccess().getIDENTIFIERTerminalRuleCall_0()); 
                
            otherlv_1=(Token)match(input,35,FOLLOW_35_in_rulebound_especification3686); 

                	newLeafNode(otherlv_1, grammarAccess.getBound_especificationAccess().getFullStopFullStopKeyword_1());
                
            this_IDENTIFIER_2=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulebound_especification3697); 
             
                newLeafNode(this_IDENTIFIER_2, grammarAccess.getBound_especificationAccess().getIDENTIFIERTerminalRuleCall_2()); 
                
            otherlv_3=(Token)match(input,28,FOLLOW_28_in_rulebound_especification3708); 

                	newLeafNode(otherlv_3, grammarAccess.getBound_especificationAccess().getColonKeyword_3());
                
             
                    newCompositeNode(grammarAccess.getBound_especificationAccess().getOrdinal_type_identifierParserRuleCall_4()); 
                
            pushFollow(FOLLOW_ruleordinal_type_identifier_in_rulebound_especification3730);
            this_ordinal_type_identifier_4=ruleordinal_type_identifier();

            state._fsp--;

             
                    current = this_ordinal_type_identifier_4; 
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulebound_especification"


    // $ANTLR start "entryRuleordinal_type_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1741:1: entryRuleordinal_type_identifier returns [EObject current=null] : iv_ruleordinal_type_identifier= ruleordinal_type_identifier EOF ;
    public final EObject entryRuleordinal_type_identifier() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleordinal_type_identifier = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1742:2: (iv_ruleordinal_type_identifier= ruleordinal_type_identifier EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1743:2: iv_ruleordinal_type_identifier= ruleordinal_type_identifier EOF
            {
             newCompositeNode(grammarAccess.getOrdinal_type_identifierRule()); 
            pushFollow(FOLLOW_ruleordinal_type_identifier_in_entryRuleordinal_type_identifier3765);
            iv_ruleordinal_type_identifier=ruleordinal_type_identifier();

            state._fsp--;

             current =iv_ruleordinal_type_identifier; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleordinal_type_identifier3775); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleordinal_type_identifier"


    // $ANTLR start "ruleordinal_type_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1750:1: ruleordinal_type_identifier returns [EObject current=null] : this_type_identifier_0= ruletype_identifier ;
    public final EObject ruleordinal_type_identifier() throws RecognitionException {
        EObject current = null;

        EObject this_type_identifier_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1753:28: (this_type_identifier_0= ruletype_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1755:5: this_type_identifier_0= ruletype_identifier
            {
             
                    newCompositeNode(grammarAccess.getOrdinal_type_identifierAccess().getType_identifierParserRuleCall()); 
                
            pushFollow(FOLLOW_ruletype_identifier_in_ruleordinal_type_identifier3821);
            this_type_identifier_0=ruletype_identifier();

            state._fsp--;

             
                    current = this_type_identifier_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleordinal_type_identifier"


    // $ANTLR start "entryRulevariable_declaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1771:1: entryRulevariable_declaration_part returns [EObject current=null] : iv_rulevariable_declaration_part= rulevariable_declaration_part EOF ;
    public final EObject entryRulevariable_declaration_part() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariable_declaration_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1772:2: (iv_rulevariable_declaration_part= rulevariable_declaration_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1773:2: iv_rulevariable_declaration_part= rulevariable_declaration_part EOF
            {
             newCompositeNode(grammarAccess.getVariable_declaration_partRule()); 
            pushFollow(FOLLOW_rulevariable_declaration_part_in_entryRulevariable_declaration_part3855);
            iv_rulevariable_declaration_part=rulevariable_declaration_part();

            state._fsp--;

             current =iv_rulevariable_declaration_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariable_declaration_part3865); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariable_declaration_part"


    // $ANTLR start "rulevariable_declaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1780:1: rulevariable_declaration_part returns [EObject current=null] : (otherlv_0= 'var' ( (lv_variables_1_0= rulevariable_declaration ) ) otherlv_2= ';' ( ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';' )* ) ;
    public final EObject rulevariable_declaration_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_variables_1_0 = null;

        EObject lv_variables_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1783:28: ( (otherlv_0= 'var' ( (lv_variables_1_0= rulevariable_declaration ) ) otherlv_2= ';' ( ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';' )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1784:1: (otherlv_0= 'var' ( (lv_variables_1_0= rulevariable_declaration ) ) otherlv_2= ';' ( ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';' )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1784:1: (otherlv_0= 'var' ( (lv_variables_1_0= rulevariable_declaration ) ) otherlv_2= ';' ( ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';' )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1784:3: otherlv_0= 'var' ( (lv_variables_1_0= rulevariable_declaration ) ) otherlv_2= ';' ( ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';' )*
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_rulevariable_declaration_part3902); 

                	newLeafNode(otherlv_0, grammarAccess.getVariable_declaration_partAccess().getVarKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1788:1: ( (lv_variables_1_0= rulevariable_declaration ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1789:1: (lv_variables_1_0= rulevariable_declaration )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1789:1: (lv_variables_1_0= rulevariable_declaration )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1790:3: lv_variables_1_0= rulevariable_declaration
            {
             
            	        newCompositeNode(grammarAccess.getVariable_declaration_partAccess().getVariablesVariable_declarationParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulevariable_declaration_in_rulevariable_declaration_part3923);
            lv_variables_1_0=rulevariable_declaration();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariable_declaration_partRule());
            	        }
                   		add(
                   			current, 
                   			"variables",
                    		lv_variables_1_0, 
                    		"variable_declaration");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,24,FOLLOW_24_in_rulevariable_declaration_part3935); 

                	newLeafNode(otherlv_2, grammarAccess.getVariable_declaration_partAccess().getSemicolonKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1810:1: ( ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';' )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==RULE_IDENTIFIER) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1810:2: ( (lv_variables_3_0= rulevariable_declaration ) ) otherlv_4= ';'
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1810:2: ( (lv_variables_3_0= rulevariable_declaration ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1811:1: (lv_variables_3_0= rulevariable_declaration )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1811:1: (lv_variables_3_0= rulevariable_declaration )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1812:3: lv_variables_3_0= rulevariable_declaration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getVariable_declaration_partAccess().getVariablesVariable_declarationParserRuleCall_3_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulevariable_declaration_in_rulevariable_declaration_part3957);
            	    lv_variables_3_0=rulevariable_declaration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getVariable_declaration_partRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"variables",
            	            		lv_variables_3_0, 
            	            		"variable_declaration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    otherlv_4=(Token)match(input,24,FOLLOW_24_in_rulevariable_declaration_part3969); 

            	        	newLeafNode(otherlv_4, grammarAccess.getVariable_declaration_partAccess().getSemicolonKeyword_3_1());
            	        

            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariable_declaration_part"


    // $ANTLR start "entryRulevariable_declaration"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1840:1: entryRulevariable_declaration returns [EObject current=null] : iv_rulevariable_declaration= rulevariable_declaration EOF ;
    public final EObject entryRulevariable_declaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariable_declaration = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1841:2: (iv_rulevariable_declaration= rulevariable_declaration EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1842:2: iv_rulevariable_declaration= rulevariable_declaration EOF
            {
             newCompositeNode(grammarAccess.getVariable_declarationRule()); 
            pushFollow(FOLLOW_rulevariable_declaration_in_entryRulevariable_declaration4007);
            iv_rulevariable_declaration=rulevariable_declaration();

            state._fsp--;

             current =iv_rulevariable_declaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariable_declaration4017); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariable_declaration"


    // $ANTLR start "rulevariable_declaration"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1849:1: rulevariable_declaration returns [EObject current=null] : ( ( (lv_variableNames_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) ) ;
    public final EObject rulevariable_declaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_variableNames_0_0 = null;

        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1852:28: ( ( ( (lv_variableNames_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1853:1: ( ( (lv_variableNames_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1853:1: ( ( (lv_variableNames_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1853:2: ( (lv_variableNames_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1853:2: ( (lv_variableNames_0_0= ruleidentifier_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1854:1: (lv_variableNames_0_0= ruleidentifier_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1854:1: (lv_variableNames_0_0= ruleidentifier_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1855:3: lv_variableNames_0_0= ruleidentifier_list
            {
             
            	        newCompositeNode(grammarAccess.getVariable_declarationAccess().getVariableNamesIdentifier_listParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleidentifier_list_in_rulevariable_declaration4063);
            lv_variableNames_0_0=ruleidentifier_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariable_declarationRule());
            	        }
                   		set(
                   			current, 
                   			"variableNames",
                    		lv_variableNames_0_0, 
                    		"identifier_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulevariable_declaration4075); 

                	newLeafNode(otherlv_1, grammarAccess.getVariable_declarationAccess().getColonKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1875:1: ( (lv_type_2_0= ruletype ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1876:1: (lv_type_2_0= ruletype )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1876:1: (lv_type_2_0= ruletype )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1877:3: lv_type_2_0= ruletype
            {
             
            	        newCompositeNode(grammarAccess.getVariable_declarationAccess().getTypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruletype_in_rulevariable_declaration4096);
            lv_type_2_0=ruletype();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariable_declarationRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariable_declaration"


    // $ANTLR start "entryRulelabel_declaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1901:1: entryRulelabel_declaration_part returns [EObject current=null] : iv_rulelabel_declaration_part= rulelabel_declaration_part EOF ;
    public final EObject entryRulelabel_declaration_part() throws RecognitionException {
        EObject current = null;

        EObject iv_rulelabel_declaration_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1902:2: (iv_rulelabel_declaration_part= rulelabel_declaration_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1903:2: iv_rulelabel_declaration_part= rulelabel_declaration_part EOF
            {
             newCompositeNode(grammarAccess.getLabel_declaration_partRule()); 
            pushFollow(FOLLOW_rulelabel_declaration_part_in_entryRulelabel_declaration_part4132);
            iv_rulelabel_declaration_part=rulelabel_declaration_part();

            state._fsp--;

             current =iv_rulelabel_declaration_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRulelabel_declaration_part4142); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulelabel_declaration_part"


    // $ANTLR start "rulelabel_declaration_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1910:1: rulelabel_declaration_part returns [EObject current=null] : (otherlv_0= 'label' ( (lv_labels_1_0= ruleLABEL ) ) (otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) ) )* otherlv_4= ';' ) ;
    public final EObject rulelabel_declaration_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_labels_1_0 = null;

        EObject lv_labels_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1913:28: ( (otherlv_0= 'label' ( (lv_labels_1_0= ruleLABEL ) ) (otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) ) )* otherlv_4= ';' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1914:1: (otherlv_0= 'label' ( (lv_labels_1_0= ruleLABEL ) ) (otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) ) )* otherlv_4= ';' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1914:1: (otherlv_0= 'label' ( (lv_labels_1_0= ruleLABEL ) ) (otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) ) )* otherlv_4= ';' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1914:3: otherlv_0= 'label' ( (lv_labels_1_0= ruleLABEL ) ) (otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) ) )* otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_36_in_rulelabel_declaration_part4179); 

                	newLeafNode(otherlv_0, grammarAccess.getLabel_declaration_partAccess().getLabelKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1918:1: ( (lv_labels_1_0= ruleLABEL ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1919:1: (lv_labels_1_0= ruleLABEL )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1919:1: (lv_labels_1_0= ruleLABEL )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1920:3: lv_labels_1_0= ruleLABEL
            {
             
            	        newCompositeNode(grammarAccess.getLabel_declaration_partAccess().getLabelsLABELParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleLABEL_in_rulelabel_declaration_part4200);
            lv_labels_1_0=ruleLABEL();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLabel_declaration_partRule());
            	        }
                   		add(
                   			current, 
                   			"labels",
                    		lv_labels_1_0, 
                    		"LABEL");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1936:2: (otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) ) )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==25) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1936:4: otherlv_2= ',' ( (lv_labels_3_0= ruleLABEL ) )
            	    {
            	    otherlv_2=(Token)match(input,25,FOLLOW_25_in_rulelabel_declaration_part4213); 

            	        	newLeafNode(otherlv_2, grammarAccess.getLabel_declaration_partAccess().getCommaKeyword_2_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1940:1: ( (lv_labels_3_0= ruleLABEL ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1941:1: (lv_labels_3_0= ruleLABEL )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1941:1: (lv_labels_3_0= ruleLABEL )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1942:3: lv_labels_3_0= ruleLABEL
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLabel_declaration_partAccess().getLabelsLABELParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleLABEL_in_rulelabel_declaration_part4234);
            	    lv_labels_3_0=ruleLABEL();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLabel_declaration_partRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"labels",
            	            		lv_labels_3_0, 
            	            		"LABEL");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            otherlv_4=(Token)match(input,24,FOLLOW_24_in_rulelabel_declaration_part4248); 

                	newLeafNode(otherlv_4, grammarAccess.getLabel_declaration_partAccess().getSemicolonKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulelabel_declaration_part"


    // $ANTLR start "entryRuleconstant_definition_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1970:1: entryRuleconstant_definition_part returns [EObject current=null] : iv_ruleconstant_definition_part= ruleconstant_definition_part EOF ;
    public final EObject entryRuleconstant_definition_part() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleconstant_definition_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1971:2: (iv_ruleconstant_definition_part= ruleconstant_definition_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1972:2: iv_ruleconstant_definition_part= ruleconstant_definition_part EOF
            {
             newCompositeNode(grammarAccess.getConstant_definition_partRule()); 
            pushFollow(FOLLOW_ruleconstant_definition_part_in_entryRuleconstant_definition_part4284);
            iv_ruleconstant_definition_part=ruleconstant_definition_part();

            state._fsp--;

             current =iv_ruleconstant_definition_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleconstant_definition_part4294); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleconstant_definition_part"


    // $ANTLR start "ruleconstant_definition_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1979:1: ruleconstant_definition_part returns [EObject current=null] : (otherlv_0= 'const' ( (lv_constantDefinitions_1_0= ruleconstant_definition ) ) otherlv_2= ';' ( ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';' )* ) ;
    public final EObject ruleconstant_definition_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_constantDefinitions_1_0 = null;

        EObject lv_constantDefinitions_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1982:28: ( (otherlv_0= 'const' ( (lv_constantDefinitions_1_0= ruleconstant_definition ) ) otherlv_2= ';' ( ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';' )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1983:1: (otherlv_0= 'const' ( (lv_constantDefinitions_1_0= ruleconstant_definition ) ) otherlv_2= ';' ( ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';' )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1983:1: (otherlv_0= 'const' ( (lv_constantDefinitions_1_0= ruleconstant_definition ) ) otherlv_2= ';' ( ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';' )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1983:3: otherlv_0= 'const' ( (lv_constantDefinitions_1_0= ruleconstant_definition ) ) otherlv_2= ';' ( ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';' )*
            {
            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleconstant_definition_part4331); 

                	newLeafNode(otherlv_0, grammarAccess.getConstant_definition_partAccess().getConstKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1987:1: ( (lv_constantDefinitions_1_0= ruleconstant_definition ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1988:1: (lv_constantDefinitions_1_0= ruleconstant_definition )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1988:1: (lv_constantDefinitions_1_0= ruleconstant_definition )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:1989:3: lv_constantDefinitions_1_0= ruleconstant_definition
            {
             
            	        newCompositeNode(grammarAccess.getConstant_definition_partAccess().getConstantDefinitionsConstant_definitionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleconstant_definition_in_ruleconstant_definition_part4352);
            lv_constantDefinitions_1_0=ruleconstant_definition();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConstant_definition_partRule());
            	        }
                   		add(
                   			current, 
                   			"constantDefinitions",
                    		lv_constantDefinitions_1_0, 
                    		"constant_definition");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleconstant_definition_part4364); 

                	newLeafNode(otherlv_2, grammarAccess.getConstant_definition_partAccess().getSemicolonKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2009:1: ( ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';' )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==RULE_IDENTIFIER) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2009:2: ( (lv_constantDefinitions_3_0= ruleconstant_definition ) ) otherlv_4= ';'
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2009:2: ( (lv_constantDefinitions_3_0= ruleconstant_definition ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2010:1: (lv_constantDefinitions_3_0= ruleconstant_definition )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2010:1: (lv_constantDefinitions_3_0= ruleconstant_definition )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2011:3: lv_constantDefinitions_3_0= ruleconstant_definition
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getConstant_definition_partAccess().getConstantDefinitionsConstant_definitionParserRuleCall_3_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleconstant_definition_in_ruleconstant_definition_part4386);
            	    lv_constantDefinitions_3_0=ruleconstant_definition();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getConstant_definition_partRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"constantDefinitions",
            	            		lv_constantDefinitions_3_0, 
            	            		"constant_definition");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    otherlv_4=(Token)match(input,24,FOLLOW_24_in_ruleconstant_definition_part4398); 

            	        	newLeafNode(otherlv_4, grammarAccess.getConstant_definition_partAccess().getSemicolonKeyword_3_1());
            	        

            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleconstant_definition_part"


    // $ANTLR start "entryRuleconstant_definition"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2039:1: entryRuleconstant_definition returns [EObject current=null] : iv_ruleconstant_definition= ruleconstant_definition EOF ;
    public final EObject entryRuleconstant_definition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleconstant_definition = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2040:2: (iv_ruleconstant_definition= ruleconstant_definition EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2041:2: iv_ruleconstant_definition= ruleconstant_definition EOF
            {
             newCompositeNode(grammarAccess.getConstant_definitionRule()); 
            pushFollow(FOLLOW_ruleconstant_definition_in_entryRuleconstant_definition4436);
            iv_ruleconstant_definition=ruleconstant_definition();

            state._fsp--;

             current =iv_ruleconstant_definition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleconstant_definition4446); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleconstant_definition"


    // $ANTLR start "ruleconstant_definition"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2048:1: ruleconstant_definition returns [EObject current=null] : ( ( (lv_constantName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_value_2_0= ruleconstant ) ) ) ;
    public final EObject ruleconstant_definition() throws RecognitionException {
        EObject current = null;

        Token lv_constantName_0_0=null;
        Token otherlv_1=null;
        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2051:28: ( ( ( (lv_constantName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_value_2_0= ruleconstant ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2052:1: ( ( (lv_constantName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_value_2_0= ruleconstant ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2052:1: ( ( (lv_constantName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_value_2_0= ruleconstant ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2052:2: ( (lv_constantName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_value_2_0= ruleconstant ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2052:2: ( (lv_constantName_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2053:1: (lv_constantName_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2053:1: (lv_constantName_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2054:3: lv_constantName_0_0= RULE_IDENTIFIER
            {
            lv_constantName_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleconstant_definition4488); 

            			newLeafNode(lv_constantName_0_0, grammarAccess.getConstant_definitionAccess().getConstantNameIDENTIFIERTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConstant_definitionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"constantName",
                    		lv_constantName_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            otherlv_1=(Token)match(input,38,FOLLOW_38_in_ruleconstant_definition4505); 

                	newLeafNode(otherlv_1, grammarAccess.getConstant_definitionAccess().getEqualsSignKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2074:1: ( (lv_value_2_0= ruleconstant ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2075:1: (lv_value_2_0= ruleconstant )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2075:1: (lv_value_2_0= ruleconstant )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2076:3: lv_value_2_0= ruleconstant
            {
             
            	        newCompositeNode(grammarAccess.getConstant_definitionAccess().getValueConstantParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleconstant_in_ruleconstant_definition4526);
            lv_value_2_0=ruleconstant();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConstant_definitionRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_2_0, 
                    		"constant");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleconstant_definition"


    // $ANTLR start "entryRuletype_definition_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2100:1: entryRuletype_definition_part returns [EObject current=null] : iv_ruletype_definition_part= ruletype_definition_part EOF ;
    public final EObject entryRuletype_definition_part() throws RecognitionException {
        EObject current = null;

        EObject iv_ruletype_definition_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2101:2: (iv_ruletype_definition_part= ruletype_definition_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2102:2: iv_ruletype_definition_part= ruletype_definition_part EOF
            {
             newCompositeNode(grammarAccess.getType_definition_partRule()); 
            pushFollow(FOLLOW_ruletype_definition_part_in_entryRuletype_definition_part4562);
            iv_ruletype_definition_part=ruletype_definition_part();

            state._fsp--;

             current =iv_ruletype_definition_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRuletype_definition_part4572); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuletype_definition_part"


    // $ANTLR start "ruletype_definition_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2109:1: ruletype_definition_part returns [EObject current=null] : (otherlv_0= 'type' ( (lv_typeDefinitions_1_0= ruletype_definition ) ) otherlv_2= ';' ( ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';' )* ) ;
    public final EObject ruletype_definition_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_typeDefinitions_1_0 = null;

        EObject lv_typeDefinitions_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2112:28: ( (otherlv_0= 'type' ( (lv_typeDefinitions_1_0= ruletype_definition ) ) otherlv_2= ';' ( ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';' )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2113:1: (otherlv_0= 'type' ( (lv_typeDefinitions_1_0= ruletype_definition ) ) otherlv_2= ';' ( ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';' )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2113:1: (otherlv_0= 'type' ( (lv_typeDefinitions_1_0= ruletype_definition ) ) otherlv_2= ';' ( ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';' )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2113:3: otherlv_0= 'type' ( (lv_typeDefinitions_1_0= ruletype_definition ) ) otherlv_2= ';' ( ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';' )*
            {
            otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruletype_definition_part4609); 

                	newLeafNode(otherlv_0, grammarAccess.getType_definition_partAccess().getTypeKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2117:1: ( (lv_typeDefinitions_1_0= ruletype_definition ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2118:1: (lv_typeDefinitions_1_0= ruletype_definition )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2118:1: (lv_typeDefinitions_1_0= ruletype_definition )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2119:3: lv_typeDefinitions_1_0= ruletype_definition
            {
             
            	        newCompositeNode(grammarAccess.getType_definition_partAccess().getTypeDefinitionsType_definitionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruletype_definition_in_ruletype_definition_part4630);
            lv_typeDefinitions_1_0=ruletype_definition();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getType_definition_partRule());
            	        }
                   		add(
                   			current, 
                   			"typeDefinitions",
                    		lv_typeDefinitions_1_0, 
                    		"type_definition");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruletype_definition_part4642); 

                	newLeafNode(otherlv_2, grammarAccess.getType_definition_partAccess().getSemicolonKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2139:1: ( ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';' )*
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( (LA23_0==RULE_IDENTIFIER) ) {
                    alt23=1;
                }


                switch (alt23) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2139:2: ( (lv_typeDefinitions_3_0= ruletype_definition ) ) otherlv_4= ';'
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2139:2: ( (lv_typeDefinitions_3_0= ruletype_definition ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2140:1: (lv_typeDefinitions_3_0= ruletype_definition )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2140:1: (lv_typeDefinitions_3_0= ruletype_definition )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2141:3: lv_typeDefinitions_3_0= ruletype_definition
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getType_definition_partAccess().getTypeDefinitionsType_definitionParserRuleCall_3_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruletype_definition_in_ruletype_definition_part4664);
            	    lv_typeDefinitions_3_0=ruletype_definition();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getType_definition_partRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"typeDefinitions",
            	            		lv_typeDefinitions_3_0, 
            	            		"type_definition");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    otherlv_4=(Token)match(input,24,FOLLOW_24_in_ruletype_definition_part4676); 

            	        	newLeafNode(otherlv_4, grammarAccess.getType_definition_partAccess().getSemicolonKeyword_3_1());
            	        

            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruletype_definition_part"


    // $ANTLR start "entryRuletype_definition"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2169:1: entryRuletype_definition returns [EObject current=null] : iv_ruletype_definition= ruletype_definition EOF ;
    public final EObject entryRuletype_definition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruletype_definition = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2170:2: (iv_ruletype_definition= ruletype_definition EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2171:2: iv_ruletype_definition= ruletype_definition EOF
            {
             newCompositeNode(grammarAccess.getType_definitionRule()); 
            pushFollow(FOLLOW_ruletype_definition_in_entryRuletype_definition4714);
            iv_ruletype_definition=ruletype_definition();

            state._fsp--;

             current =iv_ruletype_definition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuletype_definition4724); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuletype_definition"


    // $ANTLR start "ruletype_definition"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2178:1: ruletype_definition returns [EObject current=null] : ( ( (lv_typeName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_type_2_0= ruletype ) ) ) ;
    public final EObject ruletype_definition() throws RecognitionException {
        EObject current = null;

        Token lv_typeName_0_0=null;
        Token otherlv_1=null;
        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2181:28: ( ( ( (lv_typeName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_type_2_0= ruletype ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2182:1: ( ( (lv_typeName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_type_2_0= ruletype ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2182:1: ( ( (lv_typeName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_type_2_0= ruletype ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2182:2: ( (lv_typeName_0_0= RULE_IDENTIFIER ) ) otherlv_1= '=' ( (lv_type_2_0= ruletype ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2182:2: ( (lv_typeName_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2183:1: (lv_typeName_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2183:1: (lv_typeName_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2184:3: lv_typeName_0_0= RULE_IDENTIFIER
            {
            lv_typeName_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruletype_definition4766); 

            			newLeafNode(lv_typeName_0_0, grammarAccess.getType_definitionAccess().getTypeNameIDENTIFIERTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getType_definitionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"typeName",
                    		lv_typeName_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            otherlv_1=(Token)match(input,38,FOLLOW_38_in_ruletype_definition4783); 

                	newLeafNode(otherlv_1, grammarAccess.getType_definitionAccess().getEqualsSignKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2204:1: ( (lv_type_2_0= ruletype ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2205:1: (lv_type_2_0= ruletype )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2205:1: (lv_type_2_0= ruletype )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2206:3: lv_type_2_0= ruletype
            {
             
            	        newCompositeNode(grammarAccess.getType_definitionAccess().getTypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruletype_in_ruletype_definition4804);
            lv_type_2_0=ruletype();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getType_definitionRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruletype_definition"


    // $ANTLR start "entryRuletype"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2230:1: entryRuletype returns [EObject current=null] : iv_ruletype= ruletype EOF ;
    public final EObject entryRuletype() throws RecognitionException {
        EObject current = null;

        EObject iv_ruletype = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2231:2: (iv_ruletype= ruletype EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2232:2: iv_ruletype= ruletype EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruletype_in_entryRuletype4840);
            iv_ruletype=ruletype();

            state._fsp--;

             current =iv_ruletype; 
            match(input,EOF,FOLLOW_EOF_in_entryRuletype4850); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuletype"


    // $ANTLR start "ruletype"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2239:1: ruletype returns [EObject current=null] : (this_simple_type_0= rulesimple_type | this_structured_type_1= rulestructured_type | this_pointer_type_2= rulepointer_type | this_type_identifier_3= ruletype_identifier ) ;
    public final EObject ruletype() throws RecognitionException {
        EObject current = null;

        EObject this_simple_type_0 = null;

        EObject this_structured_type_1 = null;

        EObject this_pointer_type_2 = null;

        EObject this_type_identifier_3 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2242:28: ( (this_simple_type_0= rulesimple_type | this_structured_type_1= rulestructured_type | this_pointer_type_2= rulepointer_type | this_type_identifier_3= ruletype_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2243:1: (this_simple_type_0= rulesimple_type | this_structured_type_1= rulestructured_type | this_pointer_type_2= rulepointer_type | this_type_identifier_3= ruletype_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2243:1: (this_simple_type_0= rulesimple_type | this_structured_type_1= rulestructured_type | this_pointer_type_2= rulepointer_type | this_type_identifier_3= ruletype_identifier )
            int alt24=4;
            switch ( input.LA(1) ) {
            case RULE_UNSIGNED_DIGIT_SEQUENCE:
            case RULE_STRG:
            case 22:
            case 64:
            case 65:
                {
                alt24=1;
                }
                break;
            case RULE_IDENTIFIER:
                {
                int LA24_2 = input.LA(2);

                if ( (LA24_2==35) ) {
                    alt24=1;
                }
                else if ( (LA24_2==EOF||(LA24_2>=23 && LA24_2<=24)||LA24_2==44) ) {
                    alt24=4;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 24, 2, input);

                    throw nvae;
                }
                }
                break;
            case 30:
            case 34:
            case 41:
            case 42:
            case 43:
                {
                alt24=2;
                }
                break;
            case 40:
                {
                alt24=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2244:5: this_simple_type_0= rulesimple_type
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getSimple_typeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulesimple_type_in_ruletype4897);
                    this_simple_type_0=rulesimple_type();

                    state._fsp--;

                     
                            current = this_simple_type_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2254:5: this_structured_type_1= rulestructured_type
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getStructured_typeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulestructured_type_in_ruletype4924);
                    this_structured_type_1=rulestructured_type();

                    state._fsp--;

                     
                            current = this_structured_type_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2264:5: this_pointer_type_2= rulepointer_type
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getPointer_typeParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_rulepointer_type_in_ruletype4951);
                    this_pointer_type_2=rulepointer_type();

                    state._fsp--;

                     
                            current = this_pointer_type_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2274:5: this_type_identifier_3= ruletype_identifier
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getType_identifierParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruletype_identifier_in_ruletype4978);
                    this_type_identifier_3=ruletype_identifier();

                    state._fsp--;

                     
                            current = this_type_identifier_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruletype"


    // $ANTLR start "entryRulepointer_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2290:1: entryRulepointer_type returns [EObject current=null] : iv_rulepointer_type= rulepointer_type EOF ;
    public final EObject entryRulepointer_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulepointer_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2291:2: (iv_rulepointer_type= rulepointer_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2292:2: iv_rulepointer_type= rulepointer_type EOF
            {
             newCompositeNode(grammarAccess.getPointer_typeRule()); 
            pushFollow(FOLLOW_rulepointer_type_in_entryRulepointer_type5013);
            iv_rulepointer_type=rulepointer_type();

            state._fsp--;

             current =iv_rulepointer_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulepointer_type5023); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulepointer_type"


    // $ANTLR start "rulepointer_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2299:1: rulepointer_type returns [EObject current=null] : (otherlv_0= '^' ( (lv_pointerTypeName_1_0= ruletype_identifier ) ) ) ;
    public final EObject rulepointer_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_pointerTypeName_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2302:28: ( (otherlv_0= '^' ( (lv_pointerTypeName_1_0= ruletype_identifier ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2303:1: (otherlv_0= '^' ( (lv_pointerTypeName_1_0= ruletype_identifier ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2303:1: (otherlv_0= '^' ( (lv_pointerTypeName_1_0= ruletype_identifier ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2303:3: otherlv_0= '^' ( (lv_pointerTypeName_1_0= ruletype_identifier ) )
            {
            otherlv_0=(Token)match(input,40,FOLLOW_40_in_rulepointer_type5060); 

                	newLeafNode(otherlv_0, grammarAccess.getPointer_typeAccess().getCircumflexAccentKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2307:1: ( (lv_pointerTypeName_1_0= ruletype_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2308:1: (lv_pointerTypeName_1_0= ruletype_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2308:1: (lv_pointerTypeName_1_0= ruletype_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2309:3: lv_pointerTypeName_1_0= ruletype_identifier
            {
             
            	        newCompositeNode(grammarAccess.getPointer_typeAccess().getPointerTypeNameType_identifierParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruletype_identifier_in_rulepointer_type5081);
            lv_pointerTypeName_1_0=ruletype_identifier();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPointer_typeRule());
            	        }
                   		set(
                   			current, 
                   			"pointerTypeName",
                    		lv_pointerTypeName_1_0, 
                    		"type_identifier");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulepointer_type"


    // $ANTLR start "entryRuletype_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2333:1: entryRuletype_identifier returns [EObject current=null] : iv_ruletype_identifier= ruletype_identifier EOF ;
    public final EObject entryRuletype_identifier() throws RecognitionException {
        EObject current = null;

        EObject iv_ruletype_identifier = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2334:2: (iv_ruletype_identifier= ruletype_identifier EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2335:2: iv_ruletype_identifier= ruletype_identifier EOF
            {
             newCompositeNode(grammarAccess.getType_identifierRule()); 
            pushFollow(FOLLOW_ruletype_identifier_in_entryRuletype_identifier5117);
            iv_ruletype_identifier=ruletype_identifier();

            state._fsp--;

             current =iv_ruletype_identifier; 
            match(input,EOF,FOLLOW_EOF_in_entryRuletype_identifier5127); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuletype_identifier"


    // $ANTLR start "ruletype_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2342:1: ruletype_identifier returns [EObject current=null] : ( (lv_typeIdentifierName_0_0= RULE_IDENTIFIER ) ) ;
    public final EObject ruletype_identifier() throws RecognitionException {
        EObject current = null;

        Token lv_typeIdentifierName_0_0=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2345:28: ( ( (lv_typeIdentifierName_0_0= RULE_IDENTIFIER ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2346:1: ( (lv_typeIdentifierName_0_0= RULE_IDENTIFIER ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2346:1: ( (lv_typeIdentifierName_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2347:1: (lv_typeIdentifierName_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2347:1: (lv_typeIdentifierName_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2348:3: lv_typeIdentifierName_0_0= RULE_IDENTIFIER
            {
            lv_typeIdentifierName_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruletype_identifier5168); 

            			newLeafNode(lv_typeIdentifierName_0_0, grammarAccess.getType_identifierAccess().getTypeIdentifierNameIDENTIFIERTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getType_identifierRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"typeIdentifierName",
                    		lv_typeIdentifierName_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruletype_identifier"


    // $ANTLR start "entryRulestructured_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2372:1: entryRulestructured_type returns [EObject current=null] : iv_rulestructured_type= rulestructured_type EOF ;
    public final EObject entryRulestructured_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulestructured_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2373:2: (iv_rulestructured_type= rulestructured_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2374:2: iv_rulestructured_type= rulestructured_type EOF
            {
             newCompositeNode(grammarAccess.getStructured_typeRule()); 
            pushFollow(FOLLOW_rulestructured_type_in_entryRulestructured_type5208);
            iv_rulestructured_type=rulestructured_type();

            state._fsp--;

             current =iv_rulestructured_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulestructured_type5218); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulestructured_type"


    // $ANTLR start "rulestructured_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2381:1: rulestructured_type returns [EObject current=null] : ( (otherlv_0= 'packed' )? ( (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type ) ) ) ;
    public final EObject rulestructured_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_unpackedStructuredType_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2384:28: ( ( (otherlv_0= 'packed' )? ( (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2385:1: ( (otherlv_0= 'packed' )? ( (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2385:1: ( (otherlv_0= 'packed' )? ( (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2385:2: (otherlv_0= 'packed' )? ( (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2385:2: (otherlv_0= 'packed' )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==34) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2385:4: otherlv_0= 'packed'
                    {
                    otherlv_0=(Token)match(input,34,FOLLOW_34_in_rulestructured_type5256); 

                        	newLeafNode(otherlv_0, grammarAccess.getStructured_typeAccess().getPackedKeyword_0());
                        

                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2389:3: ( (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2390:1: (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2390:1: (lv_unpackedStructuredType_1_0= ruleunpacked_structured_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2391:3: lv_unpackedStructuredType_1_0= ruleunpacked_structured_type
            {
             
            	        newCompositeNode(grammarAccess.getStructured_typeAccess().getUnpackedStructuredTypeUnpacked_structured_typeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleunpacked_structured_type_in_rulestructured_type5279);
            lv_unpackedStructuredType_1_0=ruleunpacked_structured_type();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getStructured_typeRule());
            	        }
                   		set(
                   			current, 
                   			"unpackedStructuredType",
                    		lv_unpackedStructuredType_1_0, 
                    		"unpacked_structured_type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulestructured_type"


    // $ANTLR start "entryRuleunpacked_structured_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2415:1: entryRuleunpacked_structured_type returns [EObject current=null] : iv_ruleunpacked_structured_type= ruleunpacked_structured_type EOF ;
    public final EObject entryRuleunpacked_structured_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleunpacked_structured_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2416:2: (iv_ruleunpacked_structured_type= ruleunpacked_structured_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2417:2: iv_ruleunpacked_structured_type= ruleunpacked_structured_type EOF
            {
             newCompositeNode(grammarAccess.getUnpacked_structured_typeRule()); 
            pushFollow(FOLLOW_ruleunpacked_structured_type_in_entryRuleunpacked_structured_type5315);
            iv_ruleunpacked_structured_type=ruleunpacked_structured_type();

            state._fsp--;

             current =iv_ruleunpacked_structured_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleunpacked_structured_type5325); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleunpacked_structured_type"


    // $ANTLR start "ruleunpacked_structured_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2424:1: ruleunpacked_structured_type returns [EObject current=null] : (this_array_type_0= rulearray_type | this_record_type_1= rulerecord_type | this_set_type_2= ruleset_type | this_file_type_3= rulefile_type ) ;
    public final EObject ruleunpacked_structured_type() throws RecognitionException {
        EObject current = null;

        EObject this_array_type_0 = null;

        EObject this_record_type_1 = null;

        EObject this_set_type_2 = null;

        EObject this_file_type_3 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2427:28: ( (this_array_type_0= rulearray_type | this_record_type_1= rulerecord_type | this_set_type_2= ruleset_type | this_file_type_3= rulefile_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2428:1: (this_array_type_0= rulearray_type | this_record_type_1= rulerecord_type | this_set_type_2= ruleset_type | this_file_type_3= rulefile_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2428:1: (this_array_type_0= rulearray_type | this_record_type_1= rulerecord_type | this_set_type_2= ruleset_type | this_file_type_3= rulefile_type )
            int alt26=4;
            switch ( input.LA(1) ) {
            case 30:
                {
                alt26=1;
                }
                break;
            case 43:
                {
                alt26=2;
                }
                break;
            case 42:
                {
                alt26=3;
                }
                break;
            case 41:
                {
                alt26=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 26, 0, input);

                throw nvae;
            }

            switch (alt26) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2429:5: this_array_type_0= rulearray_type
                    {
                     
                            newCompositeNode(grammarAccess.getUnpacked_structured_typeAccess().getArray_typeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulearray_type_in_ruleunpacked_structured_type5372);
                    this_array_type_0=rulearray_type();

                    state._fsp--;

                     
                            current = this_array_type_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2439:5: this_record_type_1= rulerecord_type
                    {
                     
                            newCompositeNode(grammarAccess.getUnpacked_structured_typeAccess().getRecord_typeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulerecord_type_in_ruleunpacked_structured_type5399);
                    this_record_type_1=rulerecord_type();

                    state._fsp--;

                     
                            current = this_record_type_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2449:5: this_set_type_2= ruleset_type
                    {
                     
                            newCompositeNode(grammarAccess.getUnpacked_structured_typeAccess().getSet_typeParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleset_type_in_ruleunpacked_structured_type5426);
                    this_set_type_2=ruleset_type();

                    state._fsp--;

                     
                            current = this_set_type_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2459:5: this_file_type_3= rulefile_type
                    {
                     
                            newCompositeNode(grammarAccess.getUnpacked_structured_typeAccess().getFile_typeParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_rulefile_type_in_ruleunpacked_structured_type5453);
                    this_file_type_3=rulefile_type();

                    state._fsp--;

                     
                            current = this_file_type_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleunpacked_structured_type"


    // $ANTLR start "entryRulefile_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2475:1: entryRulefile_type returns [EObject current=null] : iv_rulefile_type= rulefile_type EOF ;
    public final EObject entryRulefile_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefile_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2476:2: (iv_rulefile_type= rulefile_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2477:2: iv_rulefile_type= rulefile_type EOF
            {
             newCompositeNode(grammarAccess.getFile_typeRule()); 
            pushFollow(FOLLOW_rulefile_type_in_entryRulefile_type5488);
            iv_rulefile_type=rulefile_type();

            state._fsp--;

             current =iv_rulefile_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefile_type5498); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefile_type"


    // $ANTLR start "rulefile_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2484:1: rulefile_type returns [EObject current=null] : (otherlv_0= 'file' otherlv_1= 'of' this_file_component_type_2= rulefile_component_type ) ;
    public final EObject rulefile_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject this_file_component_type_2 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2487:28: ( (otherlv_0= 'file' otherlv_1= 'of' this_file_component_type_2= rulefile_component_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2488:1: (otherlv_0= 'file' otherlv_1= 'of' this_file_component_type_2= rulefile_component_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2488:1: (otherlv_0= 'file' otherlv_1= 'of' this_file_component_type_2= rulefile_component_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2488:3: otherlv_0= 'file' otherlv_1= 'of' this_file_component_type_2= rulefile_component_type
            {
            otherlv_0=(Token)match(input,41,FOLLOW_41_in_rulefile_type5535); 

                	newLeafNode(otherlv_0, grammarAccess.getFile_typeAccess().getFileKeyword_0());
                
            otherlv_1=(Token)match(input,33,FOLLOW_33_in_rulefile_type5547); 

                	newLeafNode(otherlv_1, grammarAccess.getFile_typeAccess().getOfKeyword_1());
                
             
                    newCompositeNode(grammarAccess.getFile_typeAccess().getFile_component_typeParserRuleCall_2()); 
                
            pushFollow(FOLLOW_rulefile_component_type_in_rulefile_type5569);
            this_file_component_type_2=rulefile_component_type();

            state._fsp--;

             
                    current = this_file_component_type_2; 
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefile_type"


    // $ANTLR start "entryRulefile_component_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2513:1: entryRulefile_component_type returns [EObject current=null] : iv_rulefile_component_type= rulefile_component_type EOF ;
    public final EObject entryRulefile_component_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefile_component_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2514:2: (iv_rulefile_component_type= rulefile_component_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2515:2: iv_rulefile_component_type= rulefile_component_type EOF
            {
             newCompositeNode(grammarAccess.getFile_component_typeRule()); 
            pushFollow(FOLLOW_rulefile_component_type_in_entryRulefile_component_type5604);
            iv_rulefile_component_type=rulefile_component_type();

            state._fsp--;

             current =iv_rulefile_component_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefile_component_type5614); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefile_component_type"


    // $ANTLR start "rulefile_component_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2522:1: rulefile_component_type returns [EObject current=null] : this_type_0= ruletype ;
    public final EObject rulefile_component_type() throws RecognitionException {
        EObject current = null;

        EObject this_type_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2525:28: (this_type_0= ruletype )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2527:5: this_type_0= ruletype
            {
             
                    newCompositeNode(grammarAccess.getFile_component_typeAccess().getTypeParserRuleCall()); 
                
            pushFollow(FOLLOW_ruletype_in_rulefile_component_type5660);
            this_type_0=ruletype();

            state._fsp--;

             
                    current = this_type_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefile_component_type"


    // $ANTLR start "entryRuleset_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2543:1: entryRuleset_type returns [EObject current=null] : iv_ruleset_type= ruleset_type EOF ;
    public final EObject entryRuleset_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleset_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2544:2: (iv_ruleset_type= ruleset_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2545:2: iv_ruleset_type= ruleset_type EOF
            {
             newCompositeNode(grammarAccess.getSet_typeRule()); 
            pushFollow(FOLLOW_ruleset_type_in_entryRuleset_type5694);
            iv_ruleset_type=ruleset_type();

            state._fsp--;

             current =iv_ruleset_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleset_type5704); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleset_type"


    // $ANTLR start "ruleset_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2552:1: ruleset_type returns [EObject current=null] : (otherlv_0= 'set' otherlv_1= 'of' this_base_type_2= rulebase_type ) ;
    public final EObject ruleset_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject this_base_type_2 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2555:28: ( (otherlv_0= 'set' otherlv_1= 'of' this_base_type_2= rulebase_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2556:1: (otherlv_0= 'set' otherlv_1= 'of' this_base_type_2= rulebase_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2556:1: (otherlv_0= 'set' otherlv_1= 'of' this_base_type_2= rulebase_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2556:3: otherlv_0= 'set' otherlv_1= 'of' this_base_type_2= rulebase_type
            {
            otherlv_0=(Token)match(input,42,FOLLOW_42_in_ruleset_type5741); 

                	newLeafNode(otherlv_0, grammarAccess.getSet_typeAccess().getSetKeyword_0());
                
            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleset_type5753); 

                	newLeafNode(otherlv_1, grammarAccess.getSet_typeAccess().getOfKeyword_1());
                
             
                    newCompositeNode(grammarAccess.getSet_typeAccess().getBase_typeParserRuleCall_2()); 
                
            pushFollow(FOLLOW_rulebase_type_in_ruleset_type5775);
            this_base_type_2=rulebase_type();

            state._fsp--;

             
                    current = this_base_type_2; 
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleset_type"


    // $ANTLR start "entryRulebase_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2581:1: entryRulebase_type returns [EObject current=null] : iv_rulebase_type= rulebase_type EOF ;
    public final EObject entryRulebase_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulebase_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2582:2: (iv_rulebase_type= rulebase_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2583:2: iv_rulebase_type= rulebase_type EOF
            {
             newCompositeNode(grammarAccess.getBase_typeRule()); 
            pushFollow(FOLLOW_rulebase_type_in_entryRulebase_type5810);
            iv_rulebase_type=rulebase_type();

            state._fsp--;

             current =iv_rulebase_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulebase_type5820); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulebase_type"


    // $ANTLR start "rulebase_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2590:1: rulebase_type returns [EObject current=null] : this_type_0= ruletype ;
    public final EObject rulebase_type() throws RecognitionException {
        EObject current = null;

        EObject this_type_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2593:28: (this_type_0= ruletype )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2595:5: this_type_0= ruletype
            {
             
                    newCompositeNode(grammarAccess.getBase_typeAccess().getTypeParserRuleCall()); 
                
            pushFollow(FOLLOW_ruletype_in_rulebase_type5866);
            this_type_0=ruletype();

            state._fsp--;

             
                    current = this_type_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulebase_type"


    // $ANTLR start "entryRulerecord_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2611:1: entryRulerecord_type returns [EObject current=null] : iv_rulerecord_type= rulerecord_type EOF ;
    public final EObject entryRulerecord_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulerecord_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2612:2: (iv_rulerecord_type= rulerecord_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2613:2: iv_rulerecord_type= rulerecord_type EOF
            {
             newCompositeNode(grammarAccess.getRecord_typeRule()); 
            pushFollow(FOLLOW_rulerecord_type_in_entryRulerecord_type5900);
            iv_rulerecord_type=rulerecord_type();

            state._fsp--;

             current =iv_rulerecord_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulerecord_type5910); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulerecord_type"


    // $ANTLR start "rulerecord_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2620:1: rulerecord_type returns [EObject current=null] : (otherlv_0= 'record' this_field_list_1= rulefield_list otherlv_2= 'end' ) ;
    public final EObject rulerecord_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_field_list_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2623:28: ( (otherlv_0= 'record' this_field_list_1= rulefield_list otherlv_2= 'end' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2624:1: (otherlv_0= 'record' this_field_list_1= rulefield_list otherlv_2= 'end' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2624:1: (otherlv_0= 'record' this_field_list_1= rulefield_list otherlv_2= 'end' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2624:3: otherlv_0= 'record' this_field_list_1= rulefield_list otherlv_2= 'end'
            {
            otherlv_0=(Token)match(input,43,FOLLOW_43_in_rulerecord_type5947); 

                	newLeafNode(otherlv_0, grammarAccess.getRecord_typeAccess().getRecordKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getRecord_typeAccess().getField_listParserRuleCall_1()); 
                
            pushFollow(FOLLOW_rulefield_list_in_rulerecord_type5969);
            this_field_list_1=rulefield_list();

            state._fsp--;

             
                    current = this_field_list_1; 
                    afterParserOrEnumRuleCall();
                
            otherlv_2=(Token)match(input,44,FOLLOW_44_in_rulerecord_type5980); 

                	newLeafNode(otherlv_2, grammarAccess.getRecord_typeAccess().getEndKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulerecord_type"


    // $ANTLR start "entryRulefield_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2649:1: entryRulefield_list returns [EObject current=null] : iv_rulefield_list= rulefield_list EOF ;
    public final EObject entryRulefield_list() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefield_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2650:2: (iv_rulefield_list= rulefield_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2651:2: iv_rulefield_list= rulefield_list EOF
            {
             newCompositeNode(grammarAccess.getField_listRule()); 
            pushFollow(FOLLOW_rulefield_list_in_entryRulefield_list6016);
            iv_rulefield_list=rulefield_list();

            state._fsp--;

             current =iv_rulefield_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefield_list6026); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefield_list"


    // $ANTLR start "rulefield_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2658:1: rulefield_list returns [EObject current=null] : ( () ( ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )? )? ) ;
    public final EObject rulefield_list() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_fixedPart_1_0 = null;

        EObject lv_variantPart_3_0 = null;

        EObject lv_variantPart_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2661:28: ( ( () ( ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )? )? ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2662:1: ( () ( ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )? )? )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2662:1: ( () ( ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )? )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2662:2: () ( ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )? )?
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2662:2: ()
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2663:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getField_listAccess().getFieldListClassAction_0(),
                        current);
                

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:2: ( ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )? )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==RULE_IDENTIFIER||LA30_0==45) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:3: ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) ) (otherlv_5= ';' )?
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:3: ( ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? ) | ( (lv_variantPart_4_0= rulevariant_part ) ) )
                    int alt28=2;
                    int LA28_0 = input.LA(1);

                    if ( (LA28_0==RULE_IDENTIFIER) ) {
                        alt28=1;
                    }
                    else if ( (LA28_0==45) ) {
                        alt28=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 28, 0, input);

                        throw nvae;
                    }
                    switch (alt28) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:4: ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:4: ( ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )? )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:5: ( (lv_fixedPart_1_0= rulefixed_part ) ) (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )?
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2668:5: ( (lv_fixedPart_1_0= rulefixed_part ) )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2669:1: (lv_fixedPart_1_0= rulefixed_part )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2669:1: (lv_fixedPart_1_0= rulefixed_part )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2670:3: lv_fixedPart_1_0= rulefixed_part
                            {
                             
                            	        newCompositeNode(grammarAccess.getField_listAccess().getFixedPartFixed_partParserRuleCall_1_0_0_0_0()); 
                            	    
                            pushFollow(FOLLOW_rulefixed_part_in_rulefield_list6084);
                            lv_fixedPart_1_0=rulefixed_part();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getField_listRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"fixedPart",
                                    		lv_fixedPart_1_0, 
                                    		"fixed_part");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2686:2: (otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) ) )?
                            int alt27=2;
                            int LA27_0 = input.LA(1);

                            if ( (LA27_0==24) ) {
                                int LA27_1 = input.LA(2);

                                if ( (LA27_1==45) ) {
                                    alt27=1;
                                }
                            }
                            switch (alt27) {
                                case 1 :
                                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2686:4: otherlv_2= ';' ( (lv_variantPart_3_0= rulevariant_part ) )
                                    {
                                    otherlv_2=(Token)match(input,24,FOLLOW_24_in_rulefield_list6097); 

                                        	newLeafNode(otherlv_2, grammarAccess.getField_listAccess().getSemicolonKeyword_1_0_0_1_0());
                                        
                                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2690:1: ( (lv_variantPart_3_0= rulevariant_part ) )
                                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2691:1: (lv_variantPart_3_0= rulevariant_part )
                                    {
                                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2691:1: (lv_variantPart_3_0= rulevariant_part )
                                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2692:3: lv_variantPart_3_0= rulevariant_part
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getField_listAccess().getVariantPartVariant_partParserRuleCall_1_0_0_1_1_0()); 
                                    	    
                                    pushFollow(FOLLOW_rulevariant_part_in_rulefield_list6118);
                                    lv_variantPart_3_0=rulevariant_part();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getField_listRule());
                                    	        }
                                           		set(
                                           			current, 
                                           			"variantPart",
                                            		lv_variantPart_3_0, 
                                            		"variant_part");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2709:6: ( (lv_variantPart_4_0= rulevariant_part ) )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2709:6: ( (lv_variantPart_4_0= rulevariant_part ) )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2710:1: (lv_variantPart_4_0= rulevariant_part )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2710:1: (lv_variantPart_4_0= rulevariant_part )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2711:3: lv_variantPart_4_0= rulevariant_part
                            {
                             
                            	        newCompositeNode(grammarAccess.getField_listAccess().getVariantPartVariant_partParserRuleCall_1_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_rulevariant_part_in_rulefield_list6148);
                            lv_variantPart_4_0=rulevariant_part();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getField_listRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"variantPart",
                                    		lv_variantPart_4_0, 
                                    		"variant_part");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2727:3: (otherlv_5= ';' )?
                    int alt29=2;
                    int LA29_0 = input.LA(1);

                    if ( (LA29_0==24) ) {
                        alt29=1;
                    }
                    switch (alt29) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2727:5: otherlv_5= ';'
                            {
                            otherlv_5=(Token)match(input,24,FOLLOW_24_in_rulefield_list6162); 

                                	newLeafNode(otherlv_5, grammarAccess.getField_listAccess().getSemicolonKeyword_1_1());
                                

                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefield_list"


    // $ANTLR start "entryRulefixed_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2739:1: entryRulefixed_part returns [EObject current=null] : iv_rulefixed_part= rulefixed_part EOF ;
    public final EObject entryRulefixed_part() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefixed_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2740:2: (iv_rulefixed_part= rulefixed_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2741:2: iv_rulefixed_part= rulefixed_part EOF
            {
             newCompositeNode(grammarAccess.getFixed_partRule()); 
            pushFollow(FOLLOW_rulefixed_part_in_entryRulefixed_part6202);
            iv_rulefixed_part=rulefixed_part();

            state._fsp--;

             current =iv_rulefixed_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefixed_part6212); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefixed_part"


    // $ANTLR start "rulefixed_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2748:1: rulefixed_part returns [EObject current=null] : ( ( (lv_recordSections_0_0= rulerecord_section ) ) (otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) ) )* ) ;
    public final EObject rulefixed_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_recordSections_0_0 = null;

        EObject lv_recordSections_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2751:28: ( ( ( (lv_recordSections_0_0= rulerecord_section ) ) (otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2752:1: ( ( (lv_recordSections_0_0= rulerecord_section ) ) (otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2752:1: ( ( (lv_recordSections_0_0= rulerecord_section ) ) (otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2752:2: ( (lv_recordSections_0_0= rulerecord_section ) ) (otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2752:2: ( (lv_recordSections_0_0= rulerecord_section ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2753:1: (lv_recordSections_0_0= rulerecord_section )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2753:1: (lv_recordSections_0_0= rulerecord_section )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2754:3: lv_recordSections_0_0= rulerecord_section
            {
             
            	        newCompositeNode(grammarAccess.getFixed_partAccess().getRecordSectionsRecord_sectionParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulerecord_section_in_rulefixed_part6258);
            lv_recordSections_0_0=rulerecord_section();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFixed_partRule());
            	        }
                   		add(
                   			current, 
                   			"recordSections",
                    		lv_recordSections_0_0, 
                    		"record_section");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2770:2: (otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) ) )*
            loop31:
            do {
                int alt31=2;
                int LA31_0 = input.LA(1);

                if ( (LA31_0==24) ) {
                    int LA31_1 = input.LA(2);

                    if ( (LA31_1==RULE_IDENTIFIER) ) {
                        alt31=1;
                    }


                }


                switch (alt31) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2770:4: otherlv_1= ';' ( (lv_recordSections_2_0= rulerecord_section ) )
            	    {
            	    otherlv_1=(Token)match(input,24,FOLLOW_24_in_rulefixed_part6271); 

            	        	newLeafNode(otherlv_1, grammarAccess.getFixed_partAccess().getSemicolonKeyword_1_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2774:1: ( (lv_recordSections_2_0= rulerecord_section ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2775:1: (lv_recordSections_2_0= rulerecord_section )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2775:1: (lv_recordSections_2_0= rulerecord_section )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2776:3: lv_recordSections_2_0= rulerecord_section
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFixed_partAccess().getRecordSectionsRecord_sectionParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulerecord_section_in_rulefixed_part6292);
            	    lv_recordSections_2_0=rulerecord_section();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFixed_partRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"recordSections",
            	            		lv_recordSections_2_0, 
            	            		"record_section");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop31;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefixed_part"


    // $ANTLR start "entryRulerecord_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2800:1: entryRulerecord_section returns [EObject current=null] : iv_rulerecord_section= rulerecord_section EOF ;
    public final EObject entryRulerecord_section() throws RecognitionException {
        EObject current = null;

        EObject iv_rulerecord_section = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2801:2: (iv_rulerecord_section= rulerecord_section EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2802:2: iv_rulerecord_section= rulerecord_section EOF
            {
             newCompositeNode(grammarAccess.getRecord_sectionRule()); 
            pushFollow(FOLLOW_rulerecord_section_in_entryRulerecord_section6330);
            iv_rulerecord_section=rulerecord_section();

            state._fsp--;

             current =iv_rulerecord_section; 
            match(input,EOF,FOLLOW_EOF_in_entryRulerecord_section6340); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulerecord_section"


    // $ANTLR start "rulerecord_section"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2809:1: rulerecord_section returns [EObject current=null] : ( ( (lv_identifierlist_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) ) ;
    public final EObject rulerecord_section() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_identifierlist_0_0 = null;

        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2812:28: ( ( ( (lv_identifierlist_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2813:1: ( ( (lv_identifierlist_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2813:1: ( ( (lv_identifierlist_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2813:2: ( (lv_identifierlist_0_0= ruleidentifier_list ) ) otherlv_1= ':' ( (lv_type_2_0= ruletype ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2813:2: ( (lv_identifierlist_0_0= ruleidentifier_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2814:1: (lv_identifierlist_0_0= ruleidentifier_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2814:1: (lv_identifierlist_0_0= ruleidentifier_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2815:3: lv_identifierlist_0_0= ruleidentifier_list
            {
             
            	        newCompositeNode(grammarAccess.getRecord_sectionAccess().getIdentifierlistIdentifier_listParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleidentifier_list_in_rulerecord_section6386);
            lv_identifierlist_0_0=ruleidentifier_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRecord_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"identifierlist",
                    		lv_identifierlist_0_0, 
                    		"identifier_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulerecord_section6398); 

                	newLeafNode(otherlv_1, grammarAccess.getRecord_sectionAccess().getColonKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2835:1: ( (lv_type_2_0= ruletype ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2836:1: (lv_type_2_0= ruletype )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2836:1: (lv_type_2_0= ruletype )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2837:3: lv_type_2_0= ruletype
            {
             
            	        newCompositeNode(grammarAccess.getRecord_sectionAccess().getTypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruletype_in_rulerecord_section6419);
            lv_type_2_0=ruletype();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRecord_sectionRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulerecord_section"


    // $ANTLR start "entryRulevariant_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2861:1: entryRulevariant_part returns [EObject current=null] : iv_rulevariant_part= rulevariant_part EOF ;
    public final EObject entryRulevariant_part() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariant_part = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2862:2: (iv_rulevariant_part= rulevariant_part EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2863:2: iv_rulevariant_part= rulevariant_part EOF
            {
             newCompositeNode(grammarAccess.getVariant_partRule()); 
            pushFollow(FOLLOW_rulevariant_part_in_entryRulevariant_part6455);
            iv_rulevariant_part=rulevariant_part();

            state._fsp--;

             current =iv_rulevariant_part; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariant_part6465); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariant_part"


    // $ANTLR start "rulevariant_part"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2870:1: rulevariant_part returns [EObject current=null] : (otherlv_0= 'case' ruletag_field this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= 'of' ( (lv_variants_4_0= rulevariant ) ) (otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) ) )* ) ;
    public final EObject rulevariant_part() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token this_IDENTIFIER_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_variants_4_0 = null;

        EObject lv_variants_6_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2873:28: ( (otherlv_0= 'case' ruletag_field this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= 'of' ( (lv_variants_4_0= rulevariant ) ) (otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2874:1: (otherlv_0= 'case' ruletag_field this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= 'of' ( (lv_variants_4_0= rulevariant ) ) (otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2874:1: (otherlv_0= 'case' ruletag_field this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= 'of' ( (lv_variants_4_0= rulevariant ) ) (otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2874:3: otherlv_0= 'case' ruletag_field this_IDENTIFIER_2= RULE_IDENTIFIER otherlv_3= 'of' ( (lv_variants_4_0= rulevariant ) ) (otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) ) )*
            {
            otherlv_0=(Token)match(input,45,FOLLOW_45_in_rulevariant_part6502); 

                	newLeafNode(otherlv_0, grammarAccess.getVariant_partAccess().getCaseKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getVariant_partAccess().getTag_fieldParserRuleCall_1()); 
                
            pushFollow(FOLLOW_ruletag_field_in_rulevariant_part6518);
            ruletag_field();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                
            this_IDENTIFIER_2=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulevariant_part6528); 
             
                newLeafNode(this_IDENTIFIER_2, grammarAccess.getVariant_partAccess().getIDENTIFIERTerminalRuleCall_2()); 
                
            otherlv_3=(Token)match(input,33,FOLLOW_33_in_rulevariant_part6539); 

                	newLeafNode(otherlv_3, grammarAccess.getVariant_partAccess().getOfKeyword_3());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2894:1: ( (lv_variants_4_0= rulevariant ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2895:1: (lv_variants_4_0= rulevariant )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2895:1: (lv_variants_4_0= rulevariant )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2896:3: lv_variants_4_0= rulevariant
            {
             
            	        newCompositeNode(grammarAccess.getVariant_partAccess().getVariantsVariantParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_rulevariant_in_rulevariant_part6560);
            lv_variants_4_0=rulevariant();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariant_partRule());
            	        }
                   		add(
                   			current, 
                   			"variants",
                    		lv_variants_4_0, 
                    		"variant");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2912:2: (otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) ) )*
            loop32:
            do {
                int alt32=2;
                int LA32_0 = input.LA(1);

                if ( (LA32_0==24) ) {
                    int LA32_1 = input.LA(2);

                    if ( (LA32_1==RULE_IDENTIFIER||LA32_1==RULE_UNSIGNED_DIGIT_SEQUENCE||LA32_1==RULE_STRG||(LA32_1>=64 && LA32_1<=65)) ) {
                        alt32=1;
                    }


                }


                switch (alt32) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2912:4: otherlv_5= ';' ( (lv_variants_6_0= rulevariant ) )
            	    {
            	    otherlv_5=(Token)match(input,24,FOLLOW_24_in_rulevariant_part6573); 

            	        	newLeafNode(otherlv_5, grammarAccess.getVariant_partAccess().getSemicolonKeyword_5_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2916:1: ( (lv_variants_6_0= rulevariant ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2917:1: (lv_variants_6_0= rulevariant )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2917:1: (lv_variants_6_0= rulevariant )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2918:3: lv_variants_6_0= rulevariant
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getVariant_partAccess().getVariantsVariantParserRuleCall_5_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulevariant_in_rulevariant_part6594);
            	    lv_variants_6_0=rulevariant();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getVariant_partRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"variants",
            	            		lv_variants_6_0, 
            	            		"variant");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop32;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariant_part"


    // $ANTLR start "entryRuletag_field"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2942:1: entryRuletag_field returns [String current=null] : iv_ruletag_field= ruletag_field EOF ;
    public final String entryRuletag_field() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruletag_field = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2943:2: (iv_ruletag_field= ruletag_field EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2944:2: iv_ruletag_field= ruletag_field EOF
            {
             newCompositeNode(grammarAccess.getTag_fieldRule()); 
            pushFollow(FOLLOW_ruletag_field_in_entryRuletag_field6633);
            iv_ruletag_field=ruletag_field();

            state._fsp--;

             current =iv_ruletag_field.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuletag_field6644); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuletag_field"


    // $ANTLR start "ruletag_field"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2951:1: ruletag_field returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_IDENTIFIER_0= RULE_IDENTIFIER kw= ':' )? ;
    public final AntlrDatatypeRuleToken ruletag_field() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_IDENTIFIER_0=null;
        Token kw=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2954:28: ( (this_IDENTIFIER_0= RULE_IDENTIFIER kw= ':' )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2955:1: (this_IDENTIFIER_0= RULE_IDENTIFIER kw= ':' )?
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2955:1: (this_IDENTIFIER_0= RULE_IDENTIFIER kw= ':' )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==RULE_IDENTIFIER) ) {
                int LA33_1 = input.LA(2);

                if ( (LA33_1==28) ) {
                    alt33=1;
                }
            }
            switch (alt33) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2955:6: this_IDENTIFIER_0= RULE_IDENTIFIER kw= ':'
                    {
                    this_IDENTIFIER_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruletag_field6684); 

                    		current.merge(this_IDENTIFIER_0);
                        
                     
                        newLeafNode(this_IDENTIFIER_0, grammarAccess.getTag_fieldAccess().getIDENTIFIERTerminalRuleCall_0()); 
                        
                    kw=(Token)match(input,28,FOLLOW_28_in_ruletag_field6702); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getTag_fieldAccess().getColonKeyword_1()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruletag_field"


    // $ANTLR start "entryRulevariant"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2976:1: entryRulevariant returns [EObject current=null] : iv_rulevariant= rulevariant EOF ;
    public final EObject entryRulevariant() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariant = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2977:2: (iv_rulevariant= rulevariant EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2978:2: iv_rulevariant= rulevariant EOF
            {
             newCompositeNode(grammarAccess.getVariantRule()); 
            pushFollow(FOLLOW_rulevariant_in_entryRulevariant6743);
            iv_rulevariant=rulevariant();

            state._fsp--;

             current =iv_rulevariant; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariant6753); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariant"


    // $ANTLR start "rulevariant"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2985:1: rulevariant returns [EObject current=null] : ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' otherlv_2= '(' ( (lv_fieldList_3_0= rulefield_list ) ) otherlv_4= ')' ) ;
    public final EObject rulevariant() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_caseLabelList_0_0 = null;

        EObject lv_fieldList_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2988:28: ( ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' otherlv_2= '(' ( (lv_fieldList_3_0= rulefield_list ) ) otherlv_4= ')' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2989:1: ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' otherlv_2= '(' ( (lv_fieldList_3_0= rulefield_list ) ) otherlv_4= ')' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2989:1: ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' otherlv_2= '(' ( (lv_fieldList_3_0= rulefield_list ) ) otherlv_4= ')' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2989:2: ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' otherlv_2= '(' ( (lv_fieldList_3_0= rulefield_list ) ) otherlv_4= ')'
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2989:2: ( (lv_caseLabelList_0_0= rulecase_label_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2990:1: (lv_caseLabelList_0_0= rulecase_label_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2990:1: (lv_caseLabelList_0_0= rulecase_label_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:2991:3: lv_caseLabelList_0_0= rulecase_label_list
            {
             
            	        newCompositeNode(grammarAccess.getVariantAccess().getCaseLabelListCase_label_listParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulecase_label_list_in_rulevariant6799);
            lv_caseLabelList_0_0=rulecase_label_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariantRule());
            	        }
                   		set(
                   			current, 
                   			"caseLabelList",
                    		lv_caseLabelList_0_0, 
                    		"case_label_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulevariant6811); 

                	newLeafNode(otherlv_1, grammarAccess.getVariantAccess().getColonKeyword_1());
                
            otherlv_2=(Token)match(input,22,FOLLOW_22_in_rulevariant6823); 

                	newLeafNode(otherlv_2, grammarAccess.getVariantAccess().getLeftParenthesisKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3015:1: ( (lv_fieldList_3_0= rulefield_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3016:1: (lv_fieldList_3_0= rulefield_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3016:1: (lv_fieldList_3_0= rulefield_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3017:3: lv_fieldList_3_0= rulefield_list
            {
             
            	        newCompositeNode(grammarAccess.getVariantAccess().getFieldListField_listParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_rulefield_list_in_rulevariant6844);
            lv_fieldList_3_0=rulefield_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariantRule());
            	        }
                   		set(
                   			current, 
                   			"fieldList",
                    		lv_fieldList_3_0, 
                    		"field_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_rulevariant6856); 

                	newLeafNode(otherlv_4, grammarAccess.getVariantAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariant"


    // $ANTLR start "entryRulecase_label_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3045:1: entryRulecase_label_list returns [EObject current=null] : iv_rulecase_label_list= rulecase_label_list EOF ;
    public final EObject entryRulecase_label_list() throws RecognitionException {
        EObject current = null;

        EObject iv_rulecase_label_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3046:2: (iv_rulecase_label_list= rulecase_label_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3047:2: iv_rulecase_label_list= rulecase_label_list EOF
            {
             newCompositeNode(grammarAccess.getCase_label_listRule()); 
            pushFollow(FOLLOW_rulecase_label_list_in_entryRulecase_label_list6892);
            iv_rulecase_label_list=rulecase_label_list();

            state._fsp--;

             current =iv_rulecase_label_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRulecase_label_list6902); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulecase_label_list"


    // $ANTLR start "rulecase_label_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3054:1: rulecase_label_list returns [EObject current=null] : ( ( (lv_constants_0_0= ruleconstant ) ) (otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) ) )* ) ;
    public final EObject rulecase_label_list() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_constants_0_0 = null;

        EObject lv_constants_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3057:28: ( ( ( (lv_constants_0_0= ruleconstant ) ) (otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3058:1: ( ( (lv_constants_0_0= ruleconstant ) ) (otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3058:1: ( ( (lv_constants_0_0= ruleconstant ) ) (otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3058:2: ( (lv_constants_0_0= ruleconstant ) ) (otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3058:2: ( (lv_constants_0_0= ruleconstant ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3059:1: (lv_constants_0_0= ruleconstant )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3059:1: (lv_constants_0_0= ruleconstant )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3060:3: lv_constants_0_0= ruleconstant
            {
             
            	        newCompositeNode(grammarAccess.getCase_label_listAccess().getConstantsConstantParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleconstant_in_rulecase_label_list6948);
            lv_constants_0_0=ruleconstant();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCase_label_listRule());
            	        }
                   		add(
                   			current, 
                   			"constants",
                    		lv_constants_0_0, 
                    		"constant");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3076:2: (otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) ) )*
            loop34:
            do {
                int alt34=2;
                int LA34_0 = input.LA(1);

                if ( (LA34_0==25) ) {
                    alt34=1;
                }


                switch (alt34) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3076:4: otherlv_1= ',' ( (lv_constants_2_0= ruleconstant ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_rulecase_label_list6961); 

            	        	newLeafNode(otherlv_1, grammarAccess.getCase_label_listAccess().getCommaKeyword_1_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3080:1: ( (lv_constants_2_0= ruleconstant ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3081:1: (lv_constants_2_0= ruleconstant )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3081:1: (lv_constants_2_0= ruleconstant )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3082:3: lv_constants_2_0= ruleconstant
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getCase_label_listAccess().getConstantsConstantParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleconstant_in_rulecase_label_list6982);
            	    lv_constants_2_0=ruleconstant();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getCase_label_listRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"constants",
            	            		lv_constants_2_0, 
            	            		"constant");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop34;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulecase_label_list"


    // $ANTLR start "entryRulearray_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3106:1: entryRulearray_type returns [EObject current=null] : iv_rulearray_type= rulearray_type EOF ;
    public final EObject entryRulearray_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulearray_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3107:2: (iv_rulearray_type= rulearray_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3108:2: iv_rulearray_type= rulearray_type EOF
            {
             newCompositeNode(grammarAccess.getArray_typeRule()); 
            pushFollow(FOLLOW_rulearray_type_in_entryRulearray_type7020);
            iv_rulearray_type=rulearray_type();

            state._fsp--;

             current =iv_rulearray_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulearray_type7030); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulearray_type"


    // $ANTLR start "rulearray_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3115:1: rulearray_type returns [EObject current=null] : (otherlv_0= 'array' otherlv_1= '[' ( (lv_indexTypes_2_0= ruleindex_type ) ) (otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) ) )* otherlv_5= ']' otherlv_6= 'of' ( (lv_elementType_7_0= ruleelement_type ) ) ) ;
    public final EObject rulearray_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_indexTypes_2_0 = null;

        EObject lv_indexTypes_4_0 = null;

        EObject lv_elementType_7_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3118:28: ( (otherlv_0= 'array' otherlv_1= '[' ( (lv_indexTypes_2_0= ruleindex_type ) ) (otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) ) )* otherlv_5= ']' otherlv_6= 'of' ( (lv_elementType_7_0= ruleelement_type ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3119:1: (otherlv_0= 'array' otherlv_1= '[' ( (lv_indexTypes_2_0= ruleindex_type ) ) (otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) ) )* otherlv_5= ']' otherlv_6= 'of' ( (lv_elementType_7_0= ruleelement_type ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3119:1: (otherlv_0= 'array' otherlv_1= '[' ( (lv_indexTypes_2_0= ruleindex_type ) ) (otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) ) )* otherlv_5= ']' otherlv_6= 'of' ( (lv_elementType_7_0= ruleelement_type ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3119:3: otherlv_0= 'array' otherlv_1= '[' ( (lv_indexTypes_2_0= ruleindex_type ) ) (otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) ) )* otherlv_5= ']' otherlv_6= 'of' ( (lv_elementType_7_0= ruleelement_type ) )
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_rulearray_type7067); 

                	newLeafNode(otherlv_0, grammarAccess.getArray_typeAccess().getArrayKeyword_0());
                
            otherlv_1=(Token)match(input,31,FOLLOW_31_in_rulearray_type7079); 

                	newLeafNode(otherlv_1, grammarAccess.getArray_typeAccess().getLeftSquareBracketKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3127:1: ( (lv_indexTypes_2_0= ruleindex_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3128:1: (lv_indexTypes_2_0= ruleindex_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3128:1: (lv_indexTypes_2_0= ruleindex_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3129:3: lv_indexTypes_2_0= ruleindex_type
            {
             
            	        newCompositeNode(grammarAccess.getArray_typeAccess().getIndexTypesIndex_typeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleindex_type_in_rulearray_type7100);
            lv_indexTypes_2_0=ruleindex_type();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArray_typeRule());
            	        }
                   		add(
                   			current, 
                   			"indexTypes",
                    		lv_indexTypes_2_0, 
                    		"index_type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3145:2: (otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) ) )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( (LA35_0==25) ) {
                    alt35=1;
                }


                switch (alt35) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3145:4: otherlv_3= ',' ( (lv_indexTypes_4_0= ruleindex_type ) )
            	    {
            	    otherlv_3=(Token)match(input,25,FOLLOW_25_in_rulearray_type7113); 

            	        	newLeafNode(otherlv_3, grammarAccess.getArray_typeAccess().getCommaKeyword_3_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3149:1: ( (lv_indexTypes_4_0= ruleindex_type ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3150:1: (lv_indexTypes_4_0= ruleindex_type )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3150:1: (lv_indexTypes_4_0= ruleindex_type )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3151:3: lv_indexTypes_4_0= ruleindex_type
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getArray_typeAccess().getIndexTypesIndex_typeParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleindex_type_in_rulearray_type7134);
            	    lv_indexTypes_4_0=ruleindex_type();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getArray_typeRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"indexTypes",
            	            		lv_indexTypes_4_0, 
            	            		"index_type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);

            otherlv_5=(Token)match(input,32,FOLLOW_32_in_rulearray_type7148); 

                	newLeafNode(otherlv_5, grammarAccess.getArray_typeAccess().getRightSquareBracketKeyword_4());
                
            otherlv_6=(Token)match(input,33,FOLLOW_33_in_rulearray_type7160); 

                	newLeafNode(otherlv_6, grammarAccess.getArray_typeAccess().getOfKeyword_5());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3175:1: ( (lv_elementType_7_0= ruleelement_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3176:1: (lv_elementType_7_0= ruleelement_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3176:1: (lv_elementType_7_0= ruleelement_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3177:3: lv_elementType_7_0= ruleelement_type
            {
             
            	        newCompositeNode(grammarAccess.getArray_typeAccess().getElementTypeElement_typeParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleelement_type_in_rulearray_type7181);
            lv_elementType_7_0=ruleelement_type();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArray_typeRule());
            	        }
                   		set(
                   			current, 
                   			"elementType",
                    		lv_elementType_7_0, 
                    		"element_type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulearray_type"


    // $ANTLR start "entryRuleindex_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3201:1: entryRuleindex_type returns [EObject current=null] : iv_ruleindex_type= ruleindex_type EOF ;
    public final EObject entryRuleindex_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleindex_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3202:2: (iv_ruleindex_type= ruleindex_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3203:2: iv_ruleindex_type= ruleindex_type EOF
            {
             newCompositeNode(grammarAccess.getIndex_typeRule()); 
            pushFollow(FOLLOW_ruleindex_type_in_entryRuleindex_type7217);
            iv_ruleindex_type=ruleindex_type();

            state._fsp--;

             current =iv_ruleindex_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleindex_type7227); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleindex_type"


    // $ANTLR start "ruleindex_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3210:1: ruleindex_type returns [EObject current=null] : this_simple_type_0= rulesimple_type ;
    public final EObject ruleindex_type() throws RecognitionException {
        EObject current = null;

        EObject this_simple_type_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3213:28: (this_simple_type_0= rulesimple_type )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3215:5: this_simple_type_0= rulesimple_type
            {
             
                    newCompositeNode(grammarAccess.getIndex_typeAccess().getSimple_typeParserRuleCall()); 
                
            pushFollow(FOLLOW_rulesimple_type_in_ruleindex_type7273);
            this_simple_type_0=rulesimple_type();

            state._fsp--;

             
                    current = this_simple_type_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleindex_type"


    // $ANTLR start "entryRuleelement_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3231:1: entryRuleelement_type returns [EObject current=null] : iv_ruleelement_type= ruleelement_type EOF ;
    public final EObject entryRuleelement_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleelement_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3232:2: (iv_ruleelement_type= ruleelement_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3233:2: iv_ruleelement_type= ruleelement_type EOF
            {
             newCompositeNode(grammarAccess.getElement_typeRule()); 
            pushFollow(FOLLOW_ruleelement_type_in_entryRuleelement_type7307);
            iv_ruleelement_type=ruleelement_type();

            state._fsp--;

             current =iv_ruleelement_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleelement_type7317); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleelement_type"


    // $ANTLR start "ruleelement_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3240:1: ruleelement_type returns [EObject current=null] : this_type_0= ruletype ;
    public final EObject ruleelement_type() throws RecognitionException {
        EObject current = null;

        EObject this_type_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3243:28: (this_type_0= ruletype )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3245:5: this_type_0= ruletype
            {
             
                    newCompositeNode(grammarAccess.getElement_typeAccess().getTypeParserRuleCall()); 
                
            pushFollow(FOLLOW_ruletype_in_ruleelement_type7363);
            this_type_0=ruletype();

            state._fsp--;

             
                    current = this_type_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleelement_type"


    // $ANTLR start "entryRulesimple_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3261:1: entryRulesimple_type returns [EObject current=null] : iv_rulesimple_type= rulesimple_type EOF ;
    public final EObject entryRulesimple_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulesimple_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3262:2: (iv_rulesimple_type= rulesimple_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3263:2: iv_rulesimple_type= rulesimple_type EOF
            {
             newCompositeNode(grammarAccess.getSimple_typeRule()); 
            pushFollow(FOLLOW_rulesimple_type_in_entryRulesimple_type7397);
            iv_rulesimple_type=rulesimple_type();

            state._fsp--;

             current =iv_rulesimple_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulesimple_type7407); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulesimple_type"


    // $ANTLR start "rulesimple_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3270:1: rulesimple_type returns [EObject current=null] : (this_subrange_type_0= rulesubrange_type | this_enumerated_type_1= ruleenumerated_type ) ;
    public final EObject rulesimple_type() throws RecognitionException {
        EObject current = null;

        EObject this_subrange_type_0 = null;

        EObject this_enumerated_type_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3273:28: ( (this_subrange_type_0= rulesubrange_type | this_enumerated_type_1= ruleenumerated_type ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3274:1: (this_subrange_type_0= rulesubrange_type | this_enumerated_type_1= ruleenumerated_type )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3274:1: (this_subrange_type_0= rulesubrange_type | this_enumerated_type_1= ruleenumerated_type )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==RULE_IDENTIFIER||LA36_0==RULE_UNSIGNED_DIGIT_SEQUENCE||LA36_0==RULE_STRG||(LA36_0>=64 && LA36_0<=65)) ) {
                alt36=1;
            }
            else if ( (LA36_0==22) ) {
                alt36=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3275:5: this_subrange_type_0= rulesubrange_type
                    {
                     
                            newCompositeNode(grammarAccess.getSimple_typeAccess().getSubrange_typeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulesubrange_type_in_rulesimple_type7454);
                    this_subrange_type_0=rulesubrange_type();

                    state._fsp--;

                     
                            current = this_subrange_type_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3285:5: this_enumerated_type_1= ruleenumerated_type
                    {
                     
                            newCompositeNode(grammarAccess.getSimple_typeAccess().getEnumerated_typeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleenumerated_type_in_rulesimple_type7481);
                    this_enumerated_type_1=ruleenumerated_type();

                    state._fsp--;

                     
                            current = this_enumerated_type_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulesimple_type"


    // $ANTLR start "entryRulesubrange_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3301:1: entryRulesubrange_type returns [EObject current=null] : iv_rulesubrange_type= rulesubrange_type EOF ;
    public final EObject entryRulesubrange_type() throws RecognitionException {
        EObject current = null;

        EObject iv_rulesubrange_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3302:2: (iv_rulesubrange_type= rulesubrange_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3303:2: iv_rulesubrange_type= rulesubrange_type EOF
            {
             newCompositeNode(grammarAccess.getSubrange_typeRule()); 
            pushFollow(FOLLOW_rulesubrange_type_in_entryRulesubrange_type7516);
            iv_rulesubrange_type=rulesubrange_type();

            state._fsp--;

             current =iv_rulesubrange_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRulesubrange_type7526); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulesubrange_type"


    // $ANTLR start "rulesubrange_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3310:1: rulesubrange_type returns [EObject current=null] : ( ( (lv_lowerBound_0_0= rulelower_bound ) ) otherlv_1= '..' ( (lv_upperBound_2_0= ruleupper_bound ) ) ) ;
    public final EObject rulesubrange_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_lowerBound_0_0 = null;

        EObject lv_upperBound_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3313:28: ( ( ( (lv_lowerBound_0_0= rulelower_bound ) ) otherlv_1= '..' ( (lv_upperBound_2_0= ruleupper_bound ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3314:1: ( ( (lv_lowerBound_0_0= rulelower_bound ) ) otherlv_1= '..' ( (lv_upperBound_2_0= ruleupper_bound ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3314:1: ( ( (lv_lowerBound_0_0= rulelower_bound ) ) otherlv_1= '..' ( (lv_upperBound_2_0= ruleupper_bound ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3314:2: ( (lv_lowerBound_0_0= rulelower_bound ) ) otherlv_1= '..' ( (lv_upperBound_2_0= ruleupper_bound ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3314:2: ( (lv_lowerBound_0_0= rulelower_bound ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3315:1: (lv_lowerBound_0_0= rulelower_bound )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3315:1: (lv_lowerBound_0_0= rulelower_bound )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3316:3: lv_lowerBound_0_0= rulelower_bound
            {
             
            	        newCompositeNode(grammarAccess.getSubrange_typeAccess().getLowerBoundLower_boundParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulelower_bound_in_rulesubrange_type7572);
            lv_lowerBound_0_0=rulelower_bound();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSubrange_typeRule());
            	        }
                   		set(
                   			current, 
                   			"lowerBound",
                    		lv_lowerBound_0_0, 
                    		"lower_bound");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,35,FOLLOW_35_in_rulesubrange_type7584); 

                	newLeafNode(otherlv_1, grammarAccess.getSubrange_typeAccess().getFullStopFullStopKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3336:1: ( (lv_upperBound_2_0= ruleupper_bound ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3337:1: (lv_upperBound_2_0= ruleupper_bound )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3337:1: (lv_upperBound_2_0= ruleupper_bound )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3338:3: lv_upperBound_2_0= ruleupper_bound
            {
             
            	        newCompositeNode(grammarAccess.getSubrange_typeAccess().getUpperBoundUpper_boundParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleupper_bound_in_rulesubrange_type7605);
            lv_upperBound_2_0=ruleupper_bound();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSubrange_typeRule());
            	        }
                   		set(
                   			current, 
                   			"upperBound",
                    		lv_upperBound_2_0, 
                    		"upper_bound");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulesubrange_type"


    // $ANTLR start "entryRulelower_bound"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3362:1: entryRulelower_bound returns [EObject current=null] : iv_rulelower_bound= rulelower_bound EOF ;
    public final EObject entryRulelower_bound() throws RecognitionException {
        EObject current = null;

        EObject iv_rulelower_bound = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3363:2: (iv_rulelower_bound= rulelower_bound EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3364:2: iv_rulelower_bound= rulelower_bound EOF
            {
             newCompositeNode(grammarAccess.getLower_boundRule()); 
            pushFollow(FOLLOW_rulelower_bound_in_entryRulelower_bound7641);
            iv_rulelower_bound=rulelower_bound();

            state._fsp--;

             current =iv_rulelower_bound; 
            match(input,EOF,FOLLOW_EOF_in_entryRulelower_bound7651); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulelower_bound"


    // $ANTLR start "rulelower_bound"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3371:1: rulelower_bound returns [EObject current=null] : ( (lv_value_0_0= ruleconstant ) ) ;
    public final EObject rulelower_bound() throws RecognitionException {
        EObject current = null;

        EObject lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3374:28: ( ( (lv_value_0_0= ruleconstant ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3375:1: ( (lv_value_0_0= ruleconstant ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3375:1: ( (lv_value_0_0= ruleconstant ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3376:1: (lv_value_0_0= ruleconstant )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3376:1: (lv_value_0_0= ruleconstant )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3377:3: lv_value_0_0= ruleconstant
            {
             
            	        newCompositeNode(grammarAccess.getLower_boundAccess().getValueConstantParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleconstant_in_rulelower_bound7696);
            lv_value_0_0=ruleconstant();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLower_boundRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_0_0, 
                    		"constant");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulelower_bound"


    // $ANTLR start "entryRuleupper_bound"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3401:1: entryRuleupper_bound returns [EObject current=null] : iv_ruleupper_bound= ruleupper_bound EOF ;
    public final EObject entryRuleupper_bound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleupper_bound = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3402:2: (iv_ruleupper_bound= ruleupper_bound EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3403:2: iv_ruleupper_bound= ruleupper_bound EOF
            {
             newCompositeNode(grammarAccess.getUpper_boundRule()); 
            pushFollow(FOLLOW_ruleupper_bound_in_entryRuleupper_bound7731);
            iv_ruleupper_bound=ruleupper_bound();

            state._fsp--;

             current =iv_ruleupper_bound; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleupper_bound7741); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleupper_bound"


    // $ANTLR start "ruleupper_bound"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3410:1: ruleupper_bound returns [EObject current=null] : ( (lv_value_0_0= ruleconstant ) ) ;
    public final EObject ruleupper_bound() throws RecognitionException {
        EObject current = null;

        EObject lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3413:28: ( ( (lv_value_0_0= ruleconstant ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3414:1: ( (lv_value_0_0= ruleconstant ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3414:1: ( (lv_value_0_0= ruleconstant ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3415:1: (lv_value_0_0= ruleconstant )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3415:1: (lv_value_0_0= ruleconstant )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3416:3: lv_value_0_0= ruleconstant
            {
             
            	        newCompositeNode(grammarAccess.getUpper_boundAccess().getValueConstantParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleconstant_in_ruleupper_bound7786);
            lv_value_0_0=ruleconstant();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getUpper_boundRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_0_0, 
                    		"constant");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleupper_bound"


    // $ANTLR start "entryRuleenumerated_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3440:1: entryRuleenumerated_type returns [EObject current=null] : iv_ruleenumerated_type= ruleenumerated_type EOF ;
    public final EObject entryRuleenumerated_type() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleenumerated_type = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3441:2: (iv_ruleenumerated_type= ruleenumerated_type EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3442:2: iv_ruleenumerated_type= ruleenumerated_type EOF
            {
             newCompositeNode(grammarAccess.getEnumerated_typeRule()); 
            pushFollow(FOLLOW_ruleenumerated_type_in_entryRuleenumerated_type7821);
            iv_ruleenumerated_type=ruleenumerated_type();

            state._fsp--;

             current =iv_ruleenumerated_type; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleenumerated_type7831); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleenumerated_type"


    // $ANTLR start "ruleenumerated_type"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3449:1: ruleenumerated_type returns [EObject current=null] : (otherlv_0= '(' this_identifier_list_1= ruleidentifier_list otherlv_2= ')' ) ;
    public final EObject ruleenumerated_type() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_identifier_list_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3452:28: ( (otherlv_0= '(' this_identifier_list_1= ruleidentifier_list otherlv_2= ')' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3453:1: (otherlv_0= '(' this_identifier_list_1= ruleidentifier_list otherlv_2= ')' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3453:1: (otherlv_0= '(' this_identifier_list_1= ruleidentifier_list otherlv_2= ')' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3453:3: otherlv_0= '(' this_identifier_list_1= ruleidentifier_list otherlv_2= ')'
            {
            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleenumerated_type7868); 

                	newLeafNode(otherlv_0, grammarAccess.getEnumerated_typeAccess().getLeftParenthesisKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getEnumerated_typeAccess().getIdentifier_listParserRuleCall_1()); 
                
            pushFollow(FOLLOW_ruleidentifier_list_in_ruleenumerated_type7890);
            this_identifier_list_1=ruleidentifier_list();

            state._fsp--;

             
                    current = this_identifier_list_1; 
                    afterParserOrEnumRuleCall();
                
            otherlv_2=(Token)match(input,23,FOLLOW_23_in_ruleenumerated_type7901); 

                	newLeafNode(otherlv_2, grammarAccess.getEnumerated_typeAccess().getRightParenthesisKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleenumerated_type"


    // $ANTLR start "entryRuleLABEL"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3478:1: entryRuleLABEL returns [EObject current=null] : iv_ruleLABEL= ruleLABEL EOF ;
    public final EObject entryRuleLABEL() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLABEL = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3479:2: (iv_ruleLABEL= ruleLABEL EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3480:2: iv_ruleLABEL= ruleLABEL EOF
            {
             newCompositeNode(grammarAccess.getLABELRule()); 
            pushFollow(FOLLOW_ruleLABEL_in_entryRuleLABEL7937);
            iv_ruleLABEL=ruleLABEL();

            state._fsp--;

             current =iv_ruleLABEL; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLABEL7947); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLABEL"


    // $ANTLR start "ruleLABEL"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3487:1: ruleLABEL returns [EObject current=null] : this_DIGIT_SEQUENCE_0= ruleDIGIT_SEQUENCE ;
    public final EObject ruleLABEL() throws RecognitionException {
        EObject current = null;

        EObject this_DIGIT_SEQUENCE_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3490:28: (this_DIGIT_SEQUENCE_0= ruleDIGIT_SEQUENCE )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3492:5: this_DIGIT_SEQUENCE_0= ruleDIGIT_SEQUENCE
            {
             
                    newCompositeNode(grammarAccess.getLABELAccess().getDIGIT_SEQUENCEParserRuleCall()); 
                
            pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_ruleLABEL7993);
            this_DIGIT_SEQUENCE_0=ruleDIGIT_SEQUENCE();

            state._fsp--;

             
                    current = this_DIGIT_SEQUENCE_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLABEL"


    // $ANTLR start "entryRuleDIGIT_SEQUENCE"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3508:1: entryRuleDIGIT_SEQUENCE returns [EObject current=null] : iv_ruleDIGIT_SEQUENCE= ruleDIGIT_SEQUENCE EOF ;
    public final EObject entryRuleDIGIT_SEQUENCE() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDIGIT_SEQUENCE = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3509:2: (iv_ruleDIGIT_SEQUENCE= ruleDIGIT_SEQUENCE EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3510:2: iv_ruleDIGIT_SEQUENCE= ruleDIGIT_SEQUENCE EOF
            {
             newCompositeNode(grammarAccess.getDIGIT_SEQUENCERule()); 
            pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_entryRuleDIGIT_SEQUENCE8027);
            iv_ruleDIGIT_SEQUENCE=ruleDIGIT_SEQUENCE();

            state._fsp--;

             current =iv_ruleDIGIT_SEQUENCE; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDIGIT_SEQUENCE8037); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDIGIT_SEQUENCE"


    // $ANTLR start "ruleDIGIT_SEQUENCE"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3517:1: ruleDIGIT_SEQUENCE returns [EObject current=null] : ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) ) ) ;
    public final EObject ruleDIGIT_SEQUENCE() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;
        AntlrDatatypeRuleToken lv_sign_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3520:28: ( ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3521:1: ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3521:1: ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3521:2: ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3521:2: ( (lv_sign_0_0= ruleSIGN ) )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( ((LA37_0>=64 && LA37_0<=65)) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3522:1: (lv_sign_0_0= ruleSIGN )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3522:1: (lv_sign_0_0= ruleSIGN )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3523:3: lv_sign_0_0= ruleSIGN
                    {
                     
                    	        newCompositeNode(grammarAccess.getDIGIT_SEQUENCEAccess().getSignSIGNParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSIGN_in_ruleDIGIT_SEQUENCE8083);
                    lv_sign_0_0=ruleSIGN();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDIGIT_SEQUENCERule());
                    	        }
                           		set(
                           			current, 
                           			"sign",
                            		lv_sign_0_0, 
                            		"SIGN");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3539:3: ( (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3540:1: (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3540:1: (lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3541:3: lv_value_1_0= RULE_UNSIGNED_DIGIT_SEQUENCE
            {
            lv_value_1_0=(Token)match(input,RULE_UNSIGNED_DIGIT_SEQUENCE,FOLLOW_RULE_UNSIGNED_DIGIT_SEQUENCE_in_ruleDIGIT_SEQUENCE8101); 

            			newLeafNode(lv_value_1_0, grammarAccess.getDIGIT_SEQUENCEAccess().getValueUNSIGNED_DIGIT_SEQUENCETerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDIGIT_SEQUENCERule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"UNSIGNED_DIGIT_SEQUENCE");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDIGIT_SEQUENCE"


    // $ANTLR start "entryRuleSTATEMENT_PART"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3565:1: entryRuleSTATEMENT_PART returns [EObject current=null] : iv_ruleSTATEMENT_PART= ruleSTATEMENT_PART EOF ;
    public final EObject entryRuleSTATEMENT_PART() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSTATEMENT_PART = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3566:2: (iv_ruleSTATEMENT_PART= ruleSTATEMENT_PART EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3567:2: iv_ruleSTATEMENT_PART= ruleSTATEMENT_PART EOF
            {
             newCompositeNode(grammarAccess.getSTATEMENT_PARTRule()); 
            pushFollow(FOLLOW_ruleSTATEMENT_PART_in_entryRuleSTATEMENT_PART8142);
            iv_ruleSTATEMENT_PART=ruleSTATEMENT_PART();

            state._fsp--;

             current =iv_ruleSTATEMENT_PART; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSTATEMENT_PART8152); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSTATEMENT_PART"


    // $ANTLR start "ruleSTATEMENT_PART"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3574:1: ruleSTATEMENT_PART returns [EObject current=null] : (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' ) ;
    public final EObject ruleSTATEMENT_PART() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_statement_sequence_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3577:28: ( (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3578:1: (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3578:1: (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3578:3: otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end'
            {
            otherlv_0=(Token)match(input,46,FOLLOW_46_in_ruleSTATEMENT_PART8189); 

                	newLeafNode(otherlv_0, grammarAccess.getSTATEMENT_PARTAccess().getBeginKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getSTATEMENT_PARTAccess().getStatement_sequenceParserRuleCall_1()); 
                
            pushFollow(FOLLOW_rulestatement_sequence_in_ruleSTATEMENT_PART8211);
            this_statement_sequence_1=rulestatement_sequence();

            state._fsp--;

             
                    current = this_statement_sequence_1; 
                    afterParserOrEnumRuleCall();
                
            otherlv_2=(Token)match(input,44,FOLLOW_44_in_ruleSTATEMENT_PART8222); 

                	newLeafNode(otherlv_2, grammarAccess.getSTATEMENT_PARTAccess().getEndKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSTATEMENT_PART"


    // $ANTLR start "entryRulestatement_sequence"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3603:1: entryRulestatement_sequence returns [EObject current=null] : iv_rulestatement_sequence= rulestatement_sequence EOF ;
    public final EObject entryRulestatement_sequence() throws RecognitionException {
        EObject current = null;

        EObject iv_rulestatement_sequence = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3604:2: (iv_rulestatement_sequence= rulestatement_sequence EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3605:2: iv_rulestatement_sequence= rulestatement_sequence EOF
            {
             newCompositeNode(grammarAccess.getStatement_sequenceRule()); 
            pushFollow(FOLLOW_rulestatement_sequence_in_entryRulestatement_sequence8258);
            iv_rulestatement_sequence=rulestatement_sequence();

            state._fsp--;

             current =iv_rulestatement_sequence; 
            match(input,EOF,FOLLOW_EOF_in_entryRulestatement_sequence8268); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulestatement_sequence"


    // $ANTLR start "rulestatement_sequence"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3612:1: rulestatement_sequence returns [EObject current=null] : ( ( (lv_statements_0_0= rulestatement ) ) (otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) ) )* ) ;
    public final EObject rulestatement_sequence() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_statements_0_0 = null;

        EObject lv_statements_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3615:28: ( ( ( (lv_statements_0_0= rulestatement ) ) (otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3616:1: ( ( (lv_statements_0_0= rulestatement ) ) (otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3616:1: ( ( (lv_statements_0_0= rulestatement ) ) (otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3616:2: ( (lv_statements_0_0= rulestatement ) ) (otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3616:2: ( (lv_statements_0_0= rulestatement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3617:1: (lv_statements_0_0= rulestatement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3617:1: (lv_statements_0_0= rulestatement )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3618:3: lv_statements_0_0= rulestatement
            {
             
            	        newCompositeNode(grammarAccess.getStatement_sequenceAccess().getStatementsStatementParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_in_rulestatement_sequence8314);
            lv_statements_0_0=rulestatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getStatement_sequenceRule());
            	        }
                   		add(
                   			current, 
                   			"statements",
                    		lv_statements_0_0, 
                    		"statement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3634:2: (otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) ) )*
            loop38:
            do {
                int alt38=2;
                int LA38_0 = input.LA(1);

                if ( (LA38_0==24) ) {
                    alt38=1;
                }


                switch (alt38) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3634:4: otherlv_1= ';' ( (lv_statements_2_0= rulestatement ) )
            	    {
            	    otherlv_1=(Token)match(input,24,FOLLOW_24_in_rulestatement_sequence8327); 

            	        	newLeafNode(otherlv_1, grammarAccess.getStatement_sequenceAccess().getSemicolonKeyword_1_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3638:1: ( (lv_statements_2_0= rulestatement ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3639:1: (lv_statements_2_0= rulestatement )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3639:1: (lv_statements_2_0= rulestatement )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3640:3: lv_statements_2_0= rulestatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getStatement_sequenceAccess().getStatementsStatementParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulestatement_in_rulestatement_sequence8348);
            	    lv_statements_2_0=rulestatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getStatement_sequenceRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_2_0, 
            	            		"statement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop38;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulestatement_sequence"


    // $ANTLR start "entryRulestatement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3664:1: entryRulestatement returns [EObject current=null] : iv_rulestatement= rulestatement EOF ;
    public final EObject entryRulestatement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulestatement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3665:2: (iv_rulestatement= rulestatement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3666:2: iv_rulestatement= rulestatement EOF
            {
             newCompositeNode(grammarAccess.getStatementRule()); 
            pushFollow(FOLLOW_rulestatement_in_entryRulestatement8386);
            iv_rulestatement=rulestatement();

            state._fsp--;

             current =iv_rulestatement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulestatement8396); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulestatement"


    // $ANTLR start "rulestatement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3673:1: rulestatement returns [EObject current=null] : ( ( ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':' )? ( ( (lv_simpleStatement_2_0= rulesimple_statement ) ) | ( (lv_structuredStatement_3_0= rulestructured_statement ) ) ) ) ;
    public final EObject rulestatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_label_0_0 = null;

        EObject lv_simpleStatement_2_0 = null;

        EObject lv_structuredStatement_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3676:28: ( ( ( ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':' )? ( ( (lv_simpleStatement_2_0= rulesimple_statement ) ) | ( (lv_structuredStatement_3_0= rulestructured_statement ) ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3677:1: ( ( ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':' )? ( ( (lv_simpleStatement_2_0= rulesimple_statement ) ) | ( (lv_structuredStatement_3_0= rulestructured_statement ) ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3677:1: ( ( ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':' )? ( ( (lv_simpleStatement_2_0= rulesimple_statement ) ) | ( (lv_structuredStatement_3_0= rulestructured_statement ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3677:2: ( ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':' )? ( ( (lv_simpleStatement_2_0= rulesimple_statement ) ) | ( (lv_structuredStatement_3_0= rulestructured_statement ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3677:2: ( ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':' )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==RULE_UNSIGNED_DIGIT_SEQUENCE||(LA39_0>=64 && LA39_0<=65)) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3677:3: ( (lv_label_0_0= ruleLABEL ) ) otherlv_1= ':'
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3677:3: ( (lv_label_0_0= ruleLABEL ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3678:1: (lv_label_0_0= ruleLABEL )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3678:1: (lv_label_0_0= ruleLABEL )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3679:3: lv_label_0_0= ruleLABEL
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getLabelLABELParserRuleCall_0_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleLABEL_in_rulestatement8443);
                    lv_label_0_0=ruleLABEL();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"label",
                            		lv_label_0_0, 
                            		"LABEL");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulestatement8455); 

                        	newLeafNode(otherlv_1, grammarAccess.getStatementAccess().getColonKeyword_0_1());
                        

                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3699:3: ( ( (lv_simpleStatement_2_0= rulesimple_statement ) ) | ( (lv_structuredStatement_3_0= rulestructured_statement ) ) )
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==EOF||LA40_0==RULE_IDENTIFIER||LA40_0==24||LA40_0==44||LA40_0==51||LA40_0==57||LA40_0==59) ) {
                alt40=1;
            }
            else if ( ((LA40_0>=45 && LA40_0<=47)||LA40_0==49||LA40_0==52||LA40_0==56||LA40_0==58) ) {
                alt40=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 40, 0, input);

                throw nvae;
            }
            switch (alt40) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3699:4: ( (lv_simpleStatement_2_0= rulesimple_statement ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3699:4: ( (lv_simpleStatement_2_0= rulesimple_statement ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3700:1: (lv_simpleStatement_2_0= rulesimple_statement )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3700:1: (lv_simpleStatement_2_0= rulesimple_statement )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3701:3: lv_simpleStatement_2_0= rulesimple_statement
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getSimpleStatementSimple_statementParserRuleCall_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulesimple_statement_in_rulestatement8479);
                    lv_simpleStatement_2_0=rulesimple_statement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"simpleStatement",
                            		lv_simpleStatement_2_0, 
                            		"simple_statement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3718:6: ( (lv_structuredStatement_3_0= rulestructured_statement ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3718:6: ( (lv_structuredStatement_3_0= rulestructured_statement ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3719:1: (lv_structuredStatement_3_0= rulestructured_statement )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3719:1: (lv_structuredStatement_3_0= rulestructured_statement )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3720:3: lv_structuredStatement_3_0= rulestructured_statement
                    {
                     
                    	        newCompositeNode(grammarAccess.getStatementAccess().getStructuredStatementStructured_statementParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulestructured_statement_in_rulestatement8506);
                    lv_structuredStatement_3_0=rulestructured_statement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStatementRule());
                    	        }
                           		set(
                           			current, 
                           			"structuredStatement",
                            		lv_structuredStatement_3_0, 
                            		"structured_statement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulestatement"


    // $ANTLR start "entryRulestructured_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3744:1: entryRulestructured_statement returns [EObject current=null] : iv_rulestructured_statement= rulestructured_statement EOF ;
    public final EObject entryRulestructured_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulestructured_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3745:2: (iv_rulestructured_statement= rulestructured_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3746:2: iv_rulestructured_statement= rulestructured_statement EOF
            {
             newCompositeNode(grammarAccess.getStructured_statementRule()); 
            pushFollow(FOLLOW_rulestructured_statement_in_entryRulestructured_statement8543);
            iv_rulestructured_statement=rulestructured_statement();

            state._fsp--;

             current =iv_rulestructured_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulestructured_statement8553); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulestructured_statement"


    // $ANTLR start "rulestructured_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3753:1: rulestructured_statement returns [EObject current=null] : (this_compound_statement_0= rulecompound_statement | this_repetitive_statement_1= rulerepetitive_statement | this_conditional_statement_2= ruleconditional_statement | this_with_statement_3= rulewith_statement ) ;
    public final EObject rulestructured_statement() throws RecognitionException {
        EObject current = null;

        EObject this_compound_statement_0 = null;

        EObject this_repetitive_statement_1 = null;

        EObject this_conditional_statement_2 = null;

        EObject this_with_statement_3 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3756:28: ( (this_compound_statement_0= rulecompound_statement | this_repetitive_statement_1= rulerepetitive_statement | this_conditional_statement_2= ruleconditional_statement | this_with_statement_3= rulewith_statement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3757:1: (this_compound_statement_0= rulecompound_statement | this_repetitive_statement_1= rulerepetitive_statement | this_conditional_statement_2= ruleconditional_statement | this_with_statement_3= rulewith_statement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3757:1: (this_compound_statement_0= rulecompound_statement | this_repetitive_statement_1= rulerepetitive_statement | this_conditional_statement_2= ruleconditional_statement | this_with_statement_3= rulewith_statement )
            int alt41=4;
            switch ( input.LA(1) ) {
            case 46:
                {
                alt41=1;
                }
                break;
            case 52:
            case 56:
            case 58:
                {
                alt41=2;
                }
                break;
            case 45:
            case 49:
                {
                alt41=3;
                }
                break;
            case 47:
                {
                alt41=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 41, 0, input);

                throw nvae;
            }

            switch (alt41) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3758:5: this_compound_statement_0= rulecompound_statement
                    {
                     
                            newCompositeNode(grammarAccess.getStructured_statementAccess().getCompound_statementParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulecompound_statement_in_rulestructured_statement8600);
                    this_compound_statement_0=rulecompound_statement();

                    state._fsp--;

                     
                            current = this_compound_statement_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3768:5: this_repetitive_statement_1= rulerepetitive_statement
                    {
                     
                            newCompositeNode(grammarAccess.getStructured_statementAccess().getRepetitive_statementParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulerepetitive_statement_in_rulestructured_statement8627);
                    this_repetitive_statement_1=rulerepetitive_statement();

                    state._fsp--;

                     
                            current = this_repetitive_statement_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3778:5: this_conditional_statement_2= ruleconditional_statement
                    {
                     
                            newCompositeNode(grammarAccess.getStructured_statementAccess().getConditional_statementParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleconditional_statement_in_rulestructured_statement8654);
                    this_conditional_statement_2=ruleconditional_statement();

                    state._fsp--;

                     
                            current = this_conditional_statement_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3788:5: this_with_statement_3= rulewith_statement
                    {
                     
                            newCompositeNode(grammarAccess.getStructured_statementAccess().getWith_statementParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_rulewith_statement_in_rulestructured_statement8681);
                    this_with_statement_3=rulewith_statement();

                    state._fsp--;

                     
                            current = this_with_statement_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulestructured_statement"


    // $ANTLR start "entryRulewith_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3804:1: entryRulewith_statement returns [EObject current=null] : iv_rulewith_statement= rulewith_statement EOF ;
    public final EObject entryRulewith_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulewith_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3805:2: (iv_rulewith_statement= rulewith_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3806:2: iv_rulewith_statement= rulewith_statement EOF
            {
             newCompositeNode(grammarAccess.getWith_statementRule()); 
            pushFollow(FOLLOW_rulewith_statement_in_entryRulewith_statement8716);
            iv_rulewith_statement=rulewith_statement();

            state._fsp--;

             current =iv_rulewith_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulewith_statement8726); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulewith_statement"


    // $ANTLR start "rulewith_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3813:1: rulewith_statement returns [EObject current=null] : (otherlv_0= 'with' ( (lv_recordVariables_1_0= rulerecord_variable ) ) (otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) ) )* otherlv_4= 'do' ( (lv_statement_5_0= rulestatement ) ) ) ;
    public final EObject rulewith_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_recordVariables_1_0 = null;

        EObject lv_recordVariables_3_0 = null;

        EObject lv_statement_5_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3816:28: ( (otherlv_0= 'with' ( (lv_recordVariables_1_0= rulerecord_variable ) ) (otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) ) )* otherlv_4= 'do' ( (lv_statement_5_0= rulestatement ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3817:1: (otherlv_0= 'with' ( (lv_recordVariables_1_0= rulerecord_variable ) ) (otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) ) )* otherlv_4= 'do' ( (lv_statement_5_0= rulestatement ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3817:1: (otherlv_0= 'with' ( (lv_recordVariables_1_0= rulerecord_variable ) ) (otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) ) )* otherlv_4= 'do' ( (lv_statement_5_0= rulestatement ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3817:3: otherlv_0= 'with' ( (lv_recordVariables_1_0= rulerecord_variable ) ) (otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) ) )* otherlv_4= 'do' ( (lv_statement_5_0= rulestatement ) )
            {
            otherlv_0=(Token)match(input,47,FOLLOW_47_in_rulewith_statement8763); 

                	newLeafNode(otherlv_0, grammarAccess.getWith_statementAccess().getWithKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3821:1: ( (lv_recordVariables_1_0= rulerecord_variable ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3822:1: (lv_recordVariables_1_0= rulerecord_variable )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3822:1: (lv_recordVariables_1_0= rulerecord_variable )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3823:3: lv_recordVariables_1_0= rulerecord_variable
            {
             
            	        newCompositeNode(grammarAccess.getWith_statementAccess().getRecordVariablesRecord_variableParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulerecord_variable_in_rulewith_statement8784);
            lv_recordVariables_1_0=rulerecord_variable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWith_statementRule());
            	        }
                   		add(
                   			current, 
                   			"recordVariables",
                    		lv_recordVariables_1_0, 
                    		"record_variable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3839:2: (otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) ) )*
            loop42:
            do {
                int alt42=2;
                int LA42_0 = input.LA(1);

                if ( (LA42_0==25) ) {
                    alt42=1;
                }


                switch (alt42) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3839:4: otherlv_2= ',' ( (lv_recordVariables_3_0= rulerecord_variable ) )
            	    {
            	    otherlv_2=(Token)match(input,25,FOLLOW_25_in_rulewith_statement8797); 

            	        	newLeafNode(otherlv_2, grammarAccess.getWith_statementAccess().getCommaKeyword_2_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3843:1: ( (lv_recordVariables_3_0= rulerecord_variable ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3844:1: (lv_recordVariables_3_0= rulerecord_variable )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3844:1: (lv_recordVariables_3_0= rulerecord_variable )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3845:3: lv_recordVariables_3_0= rulerecord_variable
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getWith_statementAccess().getRecordVariablesRecord_variableParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulerecord_variable_in_rulewith_statement8818);
            	    lv_recordVariables_3_0=rulerecord_variable();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getWith_statementRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"recordVariables",
            	            		lv_recordVariables_3_0, 
            	            		"record_variable");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop42;
                }
            } while (true);

            otherlv_4=(Token)match(input,48,FOLLOW_48_in_rulewith_statement8832); 

                	newLeafNode(otherlv_4, grammarAccess.getWith_statementAccess().getDoKeyword_3());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3865:1: ( (lv_statement_5_0= rulestatement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3866:1: (lv_statement_5_0= rulestatement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3866:1: (lv_statement_5_0= rulestatement )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3867:3: lv_statement_5_0= rulestatement
            {
             
            	        newCompositeNode(grammarAccess.getWith_statementAccess().getStatementStatementParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_in_rulewith_statement8853);
            lv_statement_5_0=rulestatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWith_statementRule());
            	        }
                   		set(
                   			current, 
                   			"statement",
                    		lv_statement_5_0, 
                    		"statement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulewith_statement"


    // $ANTLR start "entryRulerecord_variable"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3891:1: entryRulerecord_variable returns [EObject current=null] : iv_rulerecord_variable= rulerecord_variable EOF ;
    public final EObject entryRulerecord_variable() throws RecognitionException {
        EObject current = null;

        EObject iv_rulerecord_variable = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3892:2: (iv_rulerecord_variable= rulerecord_variable EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3893:2: iv_rulerecord_variable= rulerecord_variable EOF
            {
             newCompositeNode(grammarAccess.getRecord_variableRule()); 
            pushFollow(FOLLOW_rulerecord_variable_in_entryRulerecord_variable8889);
            iv_rulerecord_variable=rulerecord_variable();

            state._fsp--;

             current =iv_rulerecord_variable; 
            match(input,EOF,FOLLOW_EOF_in_entryRulerecord_variable8899); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulerecord_variable"


    // $ANTLR start "rulerecord_variable"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3900:1: rulerecord_variable returns [EObject current=null] : this_variable_0= rulevariable ;
    public final EObject rulerecord_variable() throws RecognitionException {
        EObject current = null;

        EObject this_variable_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3903:28: (this_variable_0= rulevariable )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3905:5: this_variable_0= rulevariable
            {
             
                    newCompositeNode(grammarAccess.getRecord_variableAccess().getVariableParserRuleCall()); 
                
            pushFollow(FOLLOW_rulevariable_in_rulerecord_variable8945);
            this_variable_0=rulevariable();

            state._fsp--;

             
                    current = this_variable_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulerecord_variable"


    // $ANTLR start "entryRuleconditional_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3921:1: entryRuleconditional_statement returns [EObject current=null] : iv_ruleconditional_statement= ruleconditional_statement EOF ;
    public final EObject entryRuleconditional_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleconditional_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3922:2: (iv_ruleconditional_statement= ruleconditional_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3923:2: iv_ruleconditional_statement= ruleconditional_statement EOF
            {
             newCompositeNode(grammarAccess.getConditional_statementRule()); 
            pushFollow(FOLLOW_ruleconditional_statement_in_entryRuleconditional_statement8979);
            iv_ruleconditional_statement=ruleconditional_statement();

            state._fsp--;

             current =iv_ruleconditional_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleconditional_statement8989); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleconditional_statement"


    // $ANTLR start "ruleconditional_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3930:1: ruleconditional_statement returns [EObject current=null] : (this_if_statement_0= ruleif_statement | this_case_statement_1= rulecase_statement ) ;
    public final EObject ruleconditional_statement() throws RecognitionException {
        EObject current = null;

        EObject this_if_statement_0 = null;

        EObject this_case_statement_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3933:28: ( (this_if_statement_0= ruleif_statement | this_case_statement_1= rulecase_statement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3934:1: (this_if_statement_0= ruleif_statement | this_case_statement_1= rulecase_statement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3934:1: (this_if_statement_0= ruleif_statement | this_case_statement_1= rulecase_statement )
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==49) ) {
                alt43=1;
            }
            else if ( (LA43_0==45) ) {
                alt43=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 43, 0, input);

                throw nvae;
            }
            switch (alt43) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3935:5: this_if_statement_0= ruleif_statement
                    {
                     
                            newCompositeNode(grammarAccess.getConditional_statementAccess().getIf_statementParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleif_statement_in_ruleconditional_statement9036);
                    this_if_statement_0=ruleif_statement();

                    state._fsp--;

                     
                            current = this_if_statement_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3945:5: this_case_statement_1= rulecase_statement
                    {
                     
                            newCompositeNode(grammarAccess.getConditional_statementAccess().getCase_statementParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulecase_statement_in_ruleconditional_statement9063);
                    this_case_statement_1=rulecase_statement();

                    state._fsp--;

                     
                            current = this_case_statement_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleconditional_statement"


    // $ANTLR start "entryRulecase_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3961:1: entryRulecase_statement returns [EObject current=null] : iv_rulecase_statement= rulecase_statement EOF ;
    public final EObject entryRulecase_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulecase_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3962:2: (iv_rulecase_statement= rulecase_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3963:2: iv_rulecase_statement= rulecase_statement EOF
            {
             newCompositeNode(grammarAccess.getCase_statementRule()); 
            pushFollow(FOLLOW_rulecase_statement_in_entryRulecase_statement9098);
            iv_rulecase_statement=rulecase_statement();

            state._fsp--;

             current =iv_rulecase_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulecase_statement9108); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulecase_statement"


    // $ANTLR start "rulecase_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3970:1: rulecase_statement returns [EObject current=null] : (otherlv_0= 'case' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'of' ( (lv_caseLimbs_3_0= rulecase_limb ) ) (otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) ) )* (otherlv_6= ';' )? otherlv_7= 'end' ) ;
    public final EObject rulecase_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        EObject lv_expression_1_0 = null;

        EObject lv_caseLimbs_3_0 = null;

        EObject lv_caseLimbs_5_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3973:28: ( (otherlv_0= 'case' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'of' ( (lv_caseLimbs_3_0= rulecase_limb ) ) (otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) ) )* (otherlv_6= ';' )? otherlv_7= 'end' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3974:1: (otherlv_0= 'case' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'of' ( (lv_caseLimbs_3_0= rulecase_limb ) ) (otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) ) )* (otherlv_6= ';' )? otherlv_7= 'end' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3974:1: (otherlv_0= 'case' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'of' ( (lv_caseLimbs_3_0= rulecase_limb ) ) (otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) ) )* (otherlv_6= ';' )? otherlv_7= 'end' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3974:3: otherlv_0= 'case' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'of' ( (lv_caseLimbs_3_0= rulecase_limb ) ) (otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) ) )* (otherlv_6= ';' )? otherlv_7= 'end'
            {
            otherlv_0=(Token)match(input,45,FOLLOW_45_in_rulecase_statement9145); 

                	newLeafNode(otherlv_0, grammarAccess.getCase_statementAccess().getCaseKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3978:1: ( (lv_expression_1_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3979:1: (lv_expression_1_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3979:1: (lv_expression_1_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:3980:3: lv_expression_1_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getCase_statementAccess().getExpressionExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_rulecase_statement9166);
            lv_expression_1_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCase_statementRule());
            	        }
                   		set(
                   			current, 
                   			"expression",
                    		lv_expression_1_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,33,FOLLOW_33_in_rulecase_statement9178); 

                	newLeafNode(otherlv_2, grammarAccess.getCase_statementAccess().getOfKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4000:1: ( (lv_caseLimbs_3_0= rulecase_limb ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4001:1: (lv_caseLimbs_3_0= rulecase_limb )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4001:1: (lv_caseLimbs_3_0= rulecase_limb )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4002:3: lv_caseLimbs_3_0= rulecase_limb
            {
             
            	        newCompositeNode(grammarAccess.getCase_statementAccess().getCaseLimbsCase_limbParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_rulecase_limb_in_rulecase_statement9199);
            lv_caseLimbs_3_0=rulecase_limb();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCase_statementRule());
            	        }
                   		add(
                   			current, 
                   			"caseLimbs",
                    		lv_caseLimbs_3_0, 
                    		"case_limb");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4018:2: (otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) ) )*
            loop44:
            do {
                int alt44=2;
                int LA44_0 = input.LA(1);

                if ( (LA44_0==24) ) {
                    int LA44_1 = input.LA(2);

                    if ( (LA44_1==RULE_IDENTIFIER||LA44_1==RULE_UNSIGNED_DIGIT_SEQUENCE||LA44_1==RULE_STRG||(LA44_1>=64 && LA44_1<=65)) ) {
                        alt44=1;
                    }


                }


                switch (alt44) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4018:4: otherlv_4= ';' ( (lv_caseLimbs_5_0= rulecase_limb ) )
            	    {
            	    otherlv_4=(Token)match(input,24,FOLLOW_24_in_rulecase_statement9212); 

            	        	newLeafNode(otherlv_4, grammarAccess.getCase_statementAccess().getSemicolonKeyword_4_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4022:1: ( (lv_caseLimbs_5_0= rulecase_limb ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4023:1: (lv_caseLimbs_5_0= rulecase_limb )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4023:1: (lv_caseLimbs_5_0= rulecase_limb )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4024:3: lv_caseLimbs_5_0= rulecase_limb
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getCase_statementAccess().getCaseLimbsCase_limbParserRuleCall_4_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulecase_limb_in_rulecase_statement9233);
            	    lv_caseLimbs_5_0=rulecase_limb();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getCase_statementRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"caseLimbs",
            	            		lv_caseLimbs_5_0, 
            	            		"case_limb");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop44;
                }
            } while (true);

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4040:4: (otherlv_6= ';' )?
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==24) ) {
                alt45=1;
            }
            switch (alt45) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4040:6: otherlv_6= ';'
                    {
                    otherlv_6=(Token)match(input,24,FOLLOW_24_in_rulecase_statement9248); 

                        	newLeafNode(otherlv_6, grammarAccess.getCase_statementAccess().getSemicolonKeyword_5());
                        

                    }
                    break;

            }

            otherlv_7=(Token)match(input,44,FOLLOW_44_in_rulecase_statement9262); 

                	newLeafNode(otherlv_7, grammarAccess.getCase_statementAccess().getEndKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulecase_statement"


    // $ANTLR start "entryRulecase_limb"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4056:1: entryRulecase_limb returns [EObject current=null] : iv_rulecase_limb= rulecase_limb EOF ;
    public final EObject entryRulecase_limb() throws RecognitionException {
        EObject current = null;

        EObject iv_rulecase_limb = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4057:2: (iv_rulecase_limb= rulecase_limb EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4058:2: iv_rulecase_limb= rulecase_limb EOF
            {
             newCompositeNode(grammarAccess.getCase_limbRule()); 
            pushFollow(FOLLOW_rulecase_limb_in_entryRulecase_limb9298);
            iv_rulecase_limb=rulecase_limb();

            state._fsp--;

             current =iv_rulecase_limb; 
            match(input,EOF,FOLLOW_EOF_in_entryRulecase_limb9308); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulecase_limb"


    // $ANTLR start "rulecase_limb"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4065:1: rulecase_limb returns [EObject current=null] : ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' ( (lv_statement_2_0= rulestatement ) ) ) ;
    public final EObject rulecase_limb() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_caseLabelList_0_0 = null;

        EObject lv_statement_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4068:28: ( ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' ( (lv_statement_2_0= rulestatement ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4069:1: ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' ( (lv_statement_2_0= rulestatement ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4069:1: ( ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' ( (lv_statement_2_0= rulestatement ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4069:2: ( (lv_caseLabelList_0_0= rulecase_label_list ) ) otherlv_1= ':' ( (lv_statement_2_0= rulestatement ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4069:2: ( (lv_caseLabelList_0_0= rulecase_label_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4070:1: (lv_caseLabelList_0_0= rulecase_label_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4070:1: (lv_caseLabelList_0_0= rulecase_label_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4071:3: lv_caseLabelList_0_0= rulecase_label_list
            {
             
            	        newCompositeNode(grammarAccess.getCase_limbAccess().getCaseLabelListCase_label_listParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulecase_label_list_in_rulecase_limb9354);
            lv_caseLabelList_0_0=rulecase_label_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCase_limbRule());
            	        }
                   		set(
                   			current, 
                   			"caseLabelList",
                    		lv_caseLabelList_0_0, 
                    		"case_label_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulecase_limb9366); 

                	newLeafNode(otherlv_1, grammarAccess.getCase_limbAccess().getColonKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4091:1: ( (lv_statement_2_0= rulestatement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4092:1: (lv_statement_2_0= rulestatement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4092:1: (lv_statement_2_0= rulestatement )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4093:3: lv_statement_2_0= rulestatement
            {
             
            	        newCompositeNode(grammarAccess.getCase_limbAccess().getStatementStatementParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_in_rulecase_limb9387);
            lv_statement_2_0=rulestatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCase_limbRule());
            	        }
                   		set(
                   			current, 
                   			"statement",
                    		lv_statement_2_0, 
                    		"statement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulecase_limb"


    // $ANTLR start "entryRuleif_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4117:1: entryRuleif_statement returns [EObject current=null] : iv_ruleif_statement= ruleif_statement EOF ;
    public final EObject entryRuleif_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleif_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4118:2: (iv_ruleif_statement= ruleif_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4119:2: iv_ruleif_statement= ruleif_statement EOF
            {
             newCompositeNode(grammarAccess.getIf_statementRule()); 
            pushFollow(FOLLOW_ruleif_statement_in_entryRuleif_statement9423);
            iv_ruleif_statement=ruleif_statement();

            state._fsp--;

             current =iv_ruleif_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleif_statement9433); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleif_statement"


    // $ANTLR start "ruleif_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4126:1: ruleif_statement returns [EObject current=null] : (otherlv_0= 'if' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'then' ( (lv_statement_3_0= rulestatement ) ) (otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) ) )? ) ;
    public final EObject ruleif_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_expression_1_0 = null;

        EObject lv_statement_3_0 = null;

        EObject lv_statementElse_5_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4129:28: ( (otherlv_0= 'if' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'then' ( (lv_statement_3_0= rulestatement ) ) (otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) ) )? ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4130:1: (otherlv_0= 'if' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'then' ( (lv_statement_3_0= rulestatement ) ) (otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) ) )? )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4130:1: (otherlv_0= 'if' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'then' ( (lv_statement_3_0= rulestatement ) ) (otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) ) )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4130:3: otherlv_0= 'if' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'then' ( (lv_statement_3_0= rulestatement ) ) (otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) ) )?
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleif_statement9470); 

                	newLeafNode(otherlv_0, grammarAccess.getIf_statementAccess().getIfKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4134:1: ( (lv_expression_1_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4135:1: (lv_expression_1_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4135:1: (lv_expression_1_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4136:3: lv_expression_1_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getIf_statementAccess().getExpressionExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_ruleif_statement9491);
            lv_expression_1_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIf_statementRule());
            	        }
                   		set(
                   			current, 
                   			"expression",
                    		lv_expression_1_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,50,FOLLOW_50_in_ruleif_statement9503); 

                	newLeafNode(otherlv_2, grammarAccess.getIf_statementAccess().getThenKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4156:1: ( (lv_statement_3_0= rulestatement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4157:1: (lv_statement_3_0= rulestatement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4157:1: (lv_statement_3_0= rulestatement )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4158:3: lv_statement_3_0= rulestatement
            {
             
            	        newCompositeNode(grammarAccess.getIf_statementAccess().getStatementStatementParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_in_ruleif_statement9524);
            lv_statement_3_0=rulestatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIf_statementRule());
            	        }
                   		set(
                   			current, 
                   			"statement",
                    		lv_statement_3_0, 
                    		"statement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4174:2: (otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) ) )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==51) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4174:4: otherlv_4= 'else' ( (lv_statementElse_5_0= rulestatement ) )
                    {
                    otherlv_4=(Token)match(input,51,FOLLOW_51_in_ruleif_statement9537); 

                        	newLeafNode(otherlv_4, grammarAccess.getIf_statementAccess().getElseKeyword_4_0());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4178:1: ( (lv_statementElse_5_0= rulestatement ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4179:1: (lv_statementElse_5_0= rulestatement )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4179:1: (lv_statementElse_5_0= rulestatement )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4180:3: lv_statementElse_5_0= rulestatement
                    {
                     
                    	        newCompositeNode(grammarAccess.getIf_statementAccess().getStatementElseStatementParserRuleCall_4_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulestatement_in_ruleif_statement9558);
                    lv_statementElse_5_0=rulestatement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getIf_statementRule());
                    	        }
                           		set(
                           			current, 
                           			"statementElse",
                            		lv_statementElse_5_0, 
                            		"statement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleif_statement"


    // $ANTLR start "entryRulerepetitive_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4204:1: entryRulerepetitive_statement returns [EObject current=null] : iv_rulerepetitive_statement= rulerepetitive_statement EOF ;
    public final EObject entryRulerepetitive_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulerepetitive_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4205:2: (iv_rulerepetitive_statement= rulerepetitive_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4206:2: iv_rulerepetitive_statement= rulerepetitive_statement EOF
            {
             newCompositeNode(grammarAccess.getRepetitive_statementRule()); 
            pushFollow(FOLLOW_rulerepetitive_statement_in_entryRulerepetitive_statement9596);
            iv_rulerepetitive_statement=rulerepetitive_statement();

            state._fsp--;

             current =iv_rulerepetitive_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulerepetitive_statement9606); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulerepetitive_statement"


    // $ANTLR start "rulerepetitive_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4213:1: rulerepetitive_statement returns [EObject current=null] : (this_while_statement_0= rulewhile_statement | this_repeat_statement_1= rulerepeat_statement | this_for_statement_2= rulefor_statement ) ;
    public final EObject rulerepetitive_statement() throws RecognitionException {
        EObject current = null;

        EObject this_while_statement_0 = null;

        EObject this_repeat_statement_1 = null;

        EObject this_for_statement_2 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4216:28: ( (this_while_statement_0= rulewhile_statement | this_repeat_statement_1= rulerepeat_statement | this_for_statement_2= rulefor_statement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4217:1: (this_while_statement_0= rulewhile_statement | this_repeat_statement_1= rulerepeat_statement | this_for_statement_2= rulefor_statement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4217:1: (this_while_statement_0= rulewhile_statement | this_repeat_statement_1= rulerepeat_statement | this_for_statement_2= rulefor_statement )
            int alt47=3;
            switch ( input.LA(1) ) {
            case 58:
                {
                alt47=1;
                }
                break;
            case 56:
                {
                alt47=2;
                }
                break;
            case 52:
                {
                alt47=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 47, 0, input);

                throw nvae;
            }

            switch (alt47) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4218:5: this_while_statement_0= rulewhile_statement
                    {
                     
                            newCompositeNode(grammarAccess.getRepetitive_statementAccess().getWhile_statementParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulewhile_statement_in_rulerepetitive_statement9653);
                    this_while_statement_0=rulewhile_statement();

                    state._fsp--;

                     
                            current = this_while_statement_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4228:5: this_repeat_statement_1= rulerepeat_statement
                    {
                     
                            newCompositeNode(grammarAccess.getRepetitive_statementAccess().getRepeat_statementParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulerepeat_statement_in_rulerepetitive_statement9680);
                    this_repeat_statement_1=rulerepeat_statement();

                    state._fsp--;

                     
                            current = this_repeat_statement_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4238:5: this_for_statement_2= rulefor_statement
                    {
                     
                            newCompositeNode(grammarAccess.getRepetitive_statementAccess().getFor_statementParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_rulefor_statement_in_rulerepetitive_statement9707);
                    this_for_statement_2=rulefor_statement();

                    state._fsp--;

                     
                            current = this_for_statement_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulerepetitive_statement"


    // $ANTLR start "entryRulefor_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4254:1: entryRulefor_statement returns [EObject current=null] : iv_rulefor_statement= rulefor_statement EOF ;
    public final EObject entryRulefor_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefor_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4255:2: (iv_rulefor_statement= rulefor_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4256:2: iv_rulefor_statement= rulefor_statement EOF
            {
             newCompositeNode(grammarAccess.getFor_statementRule()); 
            pushFollow(FOLLOW_rulefor_statement_in_entryRulefor_statement9742);
            iv_rulefor_statement=rulefor_statement();

            state._fsp--;

             current =iv_rulefor_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefor_statement9752); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefor_statement"


    // $ANTLR start "rulefor_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4263:1: rulefor_statement returns [EObject current=null] : (otherlv_0= 'for' ( (lv_variableIdentifier_1_0= rulevariable_identifier ) ) otherlv_2= ':=' ( (lv_initialExpression_3_0= ruleinitial_expression ) ) (otherlv_4= 'to' | otherlv_5= 'downto' ) ( (lv_finalExpression_6_0= rulefinal_expression ) ) otherlv_7= 'do' ( (lv_statement_8_0= rulestatement ) ) ) ;
    public final EObject rulefor_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_variableIdentifier_1_0 = null;

        EObject lv_initialExpression_3_0 = null;

        EObject lv_finalExpression_6_0 = null;

        EObject lv_statement_8_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4266:28: ( (otherlv_0= 'for' ( (lv_variableIdentifier_1_0= rulevariable_identifier ) ) otherlv_2= ':=' ( (lv_initialExpression_3_0= ruleinitial_expression ) ) (otherlv_4= 'to' | otherlv_5= 'downto' ) ( (lv_finalExpression_6_0= rulefinal_expression ) ) otherlv_7= 'do' ( (lv_statement_8_0= rulestatement ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4267:1: (otherlv_0= 'for' ( (lv_variableIdentifier_1_0= rulevariable_identifier ) ) otherlv_2= ':=' ( (lv_initialExpression_3_0= ruleinitial_expression ) ) (otherlv_4= 'to' | otherlv_5= 'downto' ) ( (lv_finalExpression_6_0= rulefinal_expression ) ) otherlv_7= 'do' ( (lv_statement_8_0= rulestatement ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4267:1: (otherlv_0= 'for' ( (lv_variableIdentifier_1_0= rulevariable_identifier ) ) otherlv_2= ':=' ( (lv_initialExpression_3_0= ruleinitial_expression ) ) (otherlv_4= 'to' | otherlv_5= 'downto' ) ( (lv_finalExpression_6_0= rulefinal_expression ) ) otherlv_7= 'do' ( (lv_statement_8_0= rulestatement ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4267:3: otherlv_0= 'for' ( (lv_variableIdentifier_1_0= rulevariable_identifier ) ) otherlv_2= ':=' ( (lv_initialExpression_3_0= ruleinitial_expression ) ) (otherlv_4= 'to' | otherlv_5= 'downto' ) ( (lv_finalExpression_6_0= rulefinal_expression ) ) otherlv_7= 'do' ( (lv_statement_8_0= rulestatement ) )
            {
            otherlv_0=(Token)match(input,52,FOLLOW_52_in_rulefor_statement9789); 

                	newLeafNode(otherlv_0, grammarAccess.getFor_statementAccess().getForKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4271:1: ( (lv_variableIdentifier_1_0= rulevariable_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4272:1: (lv_variableIdentifier_1_0= rulevariable_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4272:1: (lv_variableIdentifier_1_0= rulevariable_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4273:3: lv_variableIdentifier_1_0= rulevariable_identifier
            {
             
            	        newCompositeNode(grammarAccess.getFor_statementAccess().getVariableIdentifierVariable_identifierParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulevariable_identifier_in_rulefor_statement9810);
            lv_variableIdentifier_1_0=rulevariable_identifier();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFor_statementRule());
            	        }
                   		set(
                   			current, 
                   			"variableIdentifier",
                    		lv_variableIdentifier_1_0, 
                    		"variable_identifier");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,53,FOLLOW_53_in_rulefor_statement9822); 

                	newLeafNode(otherlv_2, grammarAccess.getFor_statementAccess().getColonEqualsSignKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4293:1: ( (lv_initialExpression_3_0= ruleinitial_expression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4294:1: (lv_initialExpression_3_0= ruleinitial_expression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4294:1: (lv_initialExpression_3_0= ruleinitial_expression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4295:3: lv_initialExpression_3_0= ruleinitial_expression
            {
             
            	        newCompositeNode(grammarAccess.getFor_statementAccess().getInitialExpressionInitial_expressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleinitial_expression_in_rulefor_statement9843);
            lv_initialExpression_3_0=ruleinitial_expression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFor_statementRule());
            	        }
                   		set(
                   			current, 
                   			"initialExpression",
                    		lv_initialExpression_3_0, 
                    		"initial_expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4311:2: (otherlv_4= 'to' | otherlv_5= 'downto' )
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==54) ) {
                alt48=1;
            }
            else if ( (LA48_0==55) ) {
                alt48=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }
            switch (alt48) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4311:4: otherlv_4= 'to'
                    {
                    otherlv_4=(Token)match(input,54,FOLLOW_54_in_rulefor_statement9856); 

                        	newLeafNode(otherlv_4, grammarAccess.getFor_statementAccess().getToKeyword_4_0());
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4316:7: otherlv_5= 'downto'
                    {
                    otherlv_5=(Token)match(input,55,FOLLOW_55_in_rulefor_statement9874); 

                        	newLeafNode(otherlv_5, grammarAccess.getFor_statementAccess().getDowntoKeyword_4_1());
                        

                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4320:2: ( (lv_finalExpression_6_0= rulefinal_expression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4321:1: (lv_finalExpression_6_0= rulefinal_expression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4321:1: (lv_finalExpression_6_0= rulefinal_expression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4322:3: lv_finalExpression_6_0= rulefinal_expression
            {
             
            	        newCompositeNode(grammarAccess.getFor_statementAccess().getFinalExpressionFinal_expressionParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_rulefinal_expression_in_rulefor_statement9896);
            lv_finalExpression_6_0=rulefinal_expression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFor_statementRule());
            	        }
                   		set(
                   			current, 
                   			"finalExpression",
                    		lv_finalExpression_6_0, 
                    		"final_expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_7=(Token)match(input,48,FOLLOW_48_in_rulefor_statement9908); 

                	newLeafNode(otherlv_7, grammarAccess.getFor_statementAccess().getDoKeyword_6());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4342:1: ( (lv_statement_8_0= rulestatement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4343:1: (lv_statement_8_0= rulestatement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4343:1: (lv_statement_8_0= rulestatement )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4344:3: lv_statement_8_0= rulestatement
            {
             
            	        newCompositeNode(grammarAccess.getFor_statementAccess().getStatementStatementParserRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_in_rulefor_statement9929);
            lv_statement_8_0=rulestatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFor_statementRule());
            	        }
                   		set(
                   			current, 
                   			"statement",
                    		lv_statement_8_0, 
                    		"statement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefor_statement"


    // $ANTLR start "entryRuleinitial_expression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4368:1: entryRuleinitial_expression returns [EObject current=null] : iv_ruleinitial_expression= ruleinitial_expression EOF ;
    public final EObject entryRuleinitial_expression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleinitial_expression = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4369:2: (iv_ruleinitial_expression= ruleinitial_expression EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4370:2: iv_ruleinitial_expression= ruleinitial_expression EOF
            {
             newCompositeNode(grammarAccess.getInitial_expressionRule()); 
            pushFollow(FOLLOW_ruleinitial_expression_in_entryRuleinitial_expression9965);
            iv_ruleinitial_expression=ruleinitial_expression();

            state._fsp--;

             current =iv_ruleinitial_expression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleinitial_expression9975); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleinitial_expression"


    // $ANTLR start "ruleinitial_expression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4377:1: ruleinitial_expression returns [EObject current=null] : this_expression_0= ruleexpression ;
    public final EObject ruleinitial_expression() throws RecognitionException {
        EObject current = null;

        EObject this_expression_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4380:28: (this_expression_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4382:5: this_expression_0= ruleexpression
            {
             
                    newCompositeNode(grammarAccess.getInitial_expressionAccess().getExpressionParserRuleCall()); 
                
            pushFollow(FOLLOW_ruleexpression_in_ruleinitial_expression10021);
            this_expression_0=ruleexpression();

            state._fsp--;

             
                    current = this_expression_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleinitial_expression"


    // $ANTLR start "entryRulefinal_expression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4398:1: entryRulefinal_expression returns [EObject current=null] : iv_rulefinal_expression= rulefinal_expression EOF ;
    public final EObject entryRulefinal_expression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefinal_expression = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4399:2: (iv_rulefinal_expression= rulefinal_expression EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4400:2: iv_rulefinal_expression= rulefinal_expression EOF
            {
             newCompositeNode(grammarAccess.getFinal_expressionRule()); 
            pushFollow(FOLLOW_rulefinal_expression_in_entryRulefinal_expression10055);
            iv_rulefinal_expression=rulefinal_expression();

            state._fsp--;

             current =iv_rulefinal_expression; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefinal_expression10065); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefinal_expression"


    // $ANTLR start "rulefinal_expression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4407:1: rulefinal_expression returns [EObject current=null] : this_expression_0= ruleexpression ;
    public final EObject rulefinal_expression() throws RecognitionException {
        EObject current = null;

        EObject this_expression_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4410:28: (this_expression_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4412:5: this_expression_0= ruleexpression
            {
             
                    newCompositeNode(grammarAccess.getFinal_expressionAccess().getExpressionParserRuleCall()); 
                
            pushFollow(FOLLOW_ruleexpression_in_rulefinal_expression10111);
            this_expression_0=ruleexpression();

            state._fsp--;

             
                    current = this_expression_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefinal_expression"


    // $ANTLR start "entryRulevariable_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4428:1: entryRulevariable_identifier returns [EObject current=null] : iv_rulevariable_identifier= rulevariable_identifier EOF ;
    public final EObject entryRulevariable_identifier() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariable_identifier = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4429:2: (iv_rulevariable_identifier= rulevariable_identifier EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4430:2: iv_rulevariable_identifier= rulevariable_identifier EOF
            {
             newCompositeNode(grammarAccess.getVariable_identifierRule()); 
            pushFollow(FOLLOW_rulevariable_identifier_in_entryRulevariable_identifier10145);
            iv_rulevariable_identifier=rulevariable_identifier();

            state._fsp--;

             current =iv_rulevariable_identifier; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariable_identifier10155); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariable_identifier"


    // $ANTLR start "rulevariable_identifier"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4437:1: rulevariable_identifier returns [EObject current=null] : ( (lv_identifier_0_0= RULE_IDENTIFIER ) ) ;
    public final EObject rulevariable_identifier() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_0_0=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4440:28: ( ( (lv_identifier_0_0= RULE_IDENTIFIER ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4441:1: ( (lv_identifier_0_0= RULE_IDENTIFIER ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4441:1: ( (lv_identifier_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4442:1: (lv_identifier_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4442:1: (lv_identifier_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4443:3: lv_identifier_0_0= RULE_IDENTIFIER
            {
            lv_identifier_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulevariable_identifier10196); 

            			newLeafNode(lv_identifier_0_0, grammarAccess.getVariable_identifierAccess().getIdentifierIDENTIFIERTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getVariable_identifierRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"identifier",
                    		lv_identifier_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariable_identifier"


    // $ANTLR start "entryRulerepeat_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4467:1: entryRulerepeat_statement returns [EObject current=null] : iv_rulerepeat_statement= rulerepeat_statement EOF ;
    public final EObject entryRulerepeat_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulerepeat_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4468:2: (iv_rulerepeat_statement= rulerepeat_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4469:2: iv_rulerepeat_statement= rulerepeat_statement EOF
            {
             newCompositeNode(grammarAccess.getRepeat_statementRule()); 
            pushFollow(FOLLOW_rulerepeat_statement_in_entryRulerepeat_statement10236);
            iv_rulerepeat_statement=rulerepeat_statement();

            state._fsp--;

             current =iv_rulerepeat_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulerepeat_statement10246); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulerepeat_statement"


    // $ANTLR start "rulerepeat_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4476:1: rulerepeat_statement returns [EObject current=null] : (otherlv_0= 'repeat' ( (lv_StatementSequence_1_0= rulestatement_sequence ) ) otherlv_2= 'until' ( (lv_expression_3_0= ruleexpression ) ) ) ;
    public final EObject rulerepeat_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_StatementSequence_1_0 = null;

        EObject lv_expression_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4479:28: ( (otherlv_0= 'repeat' ( (lv_StatementSequence_1_0= rulestatement_sequence ) ) otherlv_2= 'until' ( (lv_expression_3_0= ruleexpression ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4480:1: (otherlv_0= 'repeat' ( (lv_StatementSequence_1_0= rulestatement_sequence ) ) otherlv_2= 'until' ( (lv_expression_3_0= ruleexpression ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4480:1: (otherlv_0= 'repeat' ( (lv_StatementSequence_1_0= rulestatement_sequence ) ) otherlv_2= 'until' ( (lv_expression_3_0= ruleexpression ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4480:3: otherlv_0= 'repeat' ( (lv_StatementSequence_1_0= rulestatement_sequence ) ) otherlv_2= 'until' ( (lv_expression_3_0= ruleexpression ) )
            {
            otherlv_0=(Token)match(input,56,FOLLOW_56_in_rulerepeat_statement10283); 

                	newLeafNode(otherlv_0, grammarAccess.getRepeat_statementAccess().getRepeatKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4484:1: ( (lv_StatementSequence_1_0= rulestatement_sequence ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4485:1: (lv_StatementSequence_1_0= rulestatement_sequence )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4485:1: (lv_StatementSequence_1_0= rulestatement_sequence )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4486:3: lv_StatementSequence_1_0= rulestatement_sequence
            {
             
            	        newCompositeNode(grammarAccess.getRepeat_statementAccess().getStatementSequenceStatement_sequenceParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_sequence_in_rulerepeat_statement10304);
            lv_StatementSequence_1_0=rulestatement_sequence();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRepeat_statementRule());
            	        }
                   		set(
                   			current, 
                   			"StatementSequence",
                    		lv_StatementSequence_1_0, 
                    		"statement_sequence");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,57,FOLLOW_57_in_rulerepeat_statement10316); 

                	newLeafNode(otherlv_2, grammarAccess.getRepeat_statementAccess().getUntilKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4506:1: ( (lv_expression_3_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4507:1: (lv_expression_3_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4507:1: (lv_expression_3_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4508:3: lv_expression_3_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getRepeat_statementAccess().getExpressionExpressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_rulerepeat_statement10337);
            lv_expression_3_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRepeat_statementRule());
            	        }
                   		set(
                   			current, 
                   			"expression",
                    		lv_expression_3_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulerepeat_statement"


    // $ANTLR start "entryRulewhile_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4532:1: entryRulewhile_statement returns [EObject current=null] : iv_rulewhile_statement= rulewhile_statement EOF ;
    public final EObject entryRulewhile_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulewhile_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4533:2: (iv_rulewhile_statement= rulewhile_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4534:2: iv_rulewhile_statement= rulewhile_statement EOF
            {
             newCompositeNode(grammarAccess.getWhile_statementRule()); 
            pushFollow(FOLLOW_rulewhile_statement_in_entryRulewhile_statement10373);
            iv_rulewhile_statement=rulewhile_statement();

            state._fsp--;

             current =iv_rulewhile_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulewhile_statement10383); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulewhile_statement"


    // $ANTLR start "rulewhile_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4541:1: rulewhile_statement returns [EObject current=null] : (otherlv_0= 'while' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'do' ( (lv_statement_3_0= rulestatement ) ) ) ;
    public final EObject rulewhile_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_expression_1_0 = null;

        EObject lv_statement_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4544:28: ( (otherlv_0= 'while' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'do' ( (lv_statement_3_0= rulestatement ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4545:1: (otherlv_0= 'while' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'do' ( (lv_statement_3_0= rulestatement ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4545:1: (otherlv_0= 'while' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'do' ( (lv_statement_3_0= rulestatement ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4545:3: otherlv_0= 'while' ( (lv_expression_1_0= ruleexpression ) ) otherlv_2= 'do' ( (lv_statement_3_0= rulestatement ) )
            {
            otherlv_0=(Token)match(input,58,FOLLOW_58_in_rulewhile_statement10420); 

                	newLeafNode(otherlv_0, grammarAccess.getWhile_statementAccess().getWhileKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4549:1: ( (lv_expression_1_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4550:1: (lv_expression_1_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4550:1: (lv_expression_1_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4551:3: lv_expression_1_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getWhile_statementAccess().getExpressionExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_rulewhile_statement10441);
            lv_expression_1_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWhile_statementRule());
            	        }
                   		set(
                   			current, 
                   			"expression",
                    		lv_expression_1_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,48,FOLLOW_48_in_rulewhile_statement10453); 

                	newLeafNode(otherlv_2, grammarAccess.getWhile_statementAccess().getDoKeyword_2());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4571:1: ( (lv_statement_3_0= rulestatement ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4572:1: (lv_statement_3_0= rulestatement )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4572:1: (lv_statement_3_0= rulestatement )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4573:3: lv_statement_3_0= rulestatement
            {
             
            	        newCompositeNode(grammarAccess.getWhile_statementAccess().getStatementStatementParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_rulestatement_in_rulewhile_statement10474);
            lv_statement_3_0=rulestatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWhile_statementRule());
            	        }
                   		set(
                   			current, 
                   			"statement",
                    		lv_statement_3_0, 
                    		"statement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulewhile_statement"


    // $ANTLR start "entryRulecompound_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4597:1: entryRulecompound_statement returns [EObject current=null] : iv_rulecompound_statement= rulecompound_statement EOF ;
    public final EObject entryRulecompound_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulecompound_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4598:2: (iv_rulecompound_statement= rulecompound_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4599:2: iv_rulecompound_statement= rulecompound_statement EOF
            {
             newCompositeNode(grammarAccess.getCompound_statementRule()); 
            pushFollow(FOLLOW_rulecompound_statement_in_entryRulecompound_statement10510);
            iv_rulecompound_statement=rulecompound_statement();

            state._fsp--;

             current =iv_rulecompound_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulecompound_statement10520); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulecompound_statement"


    // $ANTLR start "rulecompound_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4606:1: rulecompound_statement returns [EObject current=null] : (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' ) ;
    public final EObject rulecompound_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_statement_sequence_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4609:28: ( (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4610:1: (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4610:1: (otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4610:3: otherlv_0= 'begin' this_statement_sequence_1= rulestatement_sequence otherlv_2= 'end'
            {
            otherlv_0=(Token)match(input,46,FOLLOW_46_in_rulecompound_statement10557); 

                	newLeafNode(otherlv_0, grammarAccess.getCompound_statementAccess().getBeginKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getCompound_statementAccess().getStatement_sequenceParserRuleCall_1()); 
                
            pushFollow(FOLLOW_rulestatement_sequence_in_rulecompound_statement10579);
            this_statement_sequence_1=rulestatement_sequence();

            state._fsp--;

             
                    current = this_statement_sequence_1; 
                    afterParserOrEnumRuleCall();
                
            otherlv_2=(Token)match(input,44,FOLLOW_44_in_rulecompound_statement10590); 

                	newLeafNode(otherlv_2, grammarAccess.getCompound_statementAccess().getEndKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulecompound_statement"


    // $ANTLR start "entryRulesimple_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4635:1: entryRulesimple_statement returns [EObject current=null] : iv_rulesimple_statement= rulesimple_statement EOF ;
    public final EObject entryRulesimple_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulesimple_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4636:2: (iv_rulesimple_statement= rulesimple_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4637:2: iv_rulesimple_statement= rulesimple_statement EOF
            {
             newCompositeNode(grammarAccess.getSimple_statementRule()); 
            pushFollow(FOLLOW_rulesimple_statement_in_entryRulesimple_statement10626);
            iv_rulesimple_statement=rulesimple_statement();

            state._fsp--;

             current =iv_rulesimple_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulesimple_statement10636); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulesimple_statement"


    // $ANTLR start "rulesimple_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4644:1: rulesimple_statement returns [EObject current=null] : (this_assignment_statement_0= ruleassignment_statement | this_procedure_statement_1= ruleprocedure_statement | this_goto_statement_2= rulegoto_statement )? ;
    public final EObject rulesimple_statement() throws RecognitionException {
        EObject current = null;

        EObject this_assignment_statement_0 = null;

        EObject this_procedure_statement_1 = null;

        EObject this_goto_statement_2 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4647:28: ( (this_assignment_statement_0= ruleassignment_statement | this_procedure_statement_1= ruleprocedure_statement | this_goto_statement_2= rulegoto_statement )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4648:1: (this_assignment_statement_0= ruleassignment_statement | this_procedure_statement_1= ruleprocedure_statement | this_goto_statement_2= rulegoto_statement )?
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4648:1: (this_assignment_statement_0= ruleassignment_statement | this_procedure_statement_1= ruleprocedure_statement | this_goto_statement_2= rulegoto_statement )?
            int alt49=4;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==RULE_IDENTIFIER) ) {
                int LA49_1 = input.LA(2);

                if ( (LA49_1==20||LA49_1==31||LA49_1==40||LA49_1==53) ) {
                    alt49=1;
                }
                else if ( (LA49_1==EOF||LA49_1==22||LA49_1==24||LA49_1==44||LA49_1==51||LA49_1==57) ) {
                    alt49=2;
                }
            }
            else if ( (LA49_0==59) ) {
                alt49=3;
            }
            switch (alt49) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4649:5: this_assignment_statement_0= ruleassignment_statement
                    {
                     
                            newCompositeNode(grammarAccess.getSimple_statementAccess().getAssignment_statementParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleassignment_statement_in_rulesimple_statement10683);
                    this_assignment_statement_0=ruleassignment_statement();

                    state._fsp--;

                     
                            current = this_assignment_statement_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4659:5: this_procedure_statement_1= ruleprocedure_statement
                    {
                     
                            newCompositeNode(grammarAccess.getSimple_statementAccess().getProcedure_statementParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleprocedure_statement_in_rulesimple_statement10710);
                    this_procedure_statement_1=ruleprocedure_statement();

                    state._fsp--;

                     
                            current = this_procedure_statement_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4669:5: this_goto_statement_2= rulegoto_statement
                    {
                     
                            newCompositeNode(grammarAccess.getSimple_statementAccess().getGoto_statementParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_rulegoto_statement_in_rulesimple_statement10737);
                    this_goto_statement_2=rulegoto_statement();

                    state._fsp--;

                     
                            current = this_goto_statement_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulesimple_statement"


    // $ANTLR start "entryRulegoto_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4685:1: entryRulegoto_statement returns [EObject current=null] : iv_rulegoto_statement= rulegoto_statement EOF ;
    public final EObject entryRulegoto_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulegoto_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4686:2: (iv_rulegoto_statement= rulegoto_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4687:2: iv_rulegoto_statement= rulegoto_statement EOF
            {
             newCompositeNode(grammarAccess.getGoto_statementRule()); 
            pushFollow(FOLLOW_rulegoto_statement_in_entryRulegoto_statement10773);
            iv_rulegoto_statement=rulegoto_statement();

            state._fsp--;

             current =iv_rulegoto_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRulegoto_statement10783); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulegoto_statement"


    // $ANTLR start "rulegoto_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4694:1: rulegoto_statement returns [EObject current=null] : (otherlv_0= 'goto' ( (lv_label_1_0= ruleLABEL ) ) ) ;
    public final EObject rulegoto_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_label_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4697:28: ( (otherlv_0= 'goto' ( (lv_label_1_0= ruleLABEL ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4698:1: (otherlv_0= 'goto' ( (lv_label_1_0= ruleLABEL ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4698:1: (otherlv_0= 'goto' ( (lv_label_1_0= ruleLABEL ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4698:3: otherlv_0= 'goto' ( (lv_label_1_0= ruleLABEL ) )
            {
            otherlv_0=(Token)match(input,59,FOLLOW_59_in_rulegoto_statement10820); 

                	newLeafNode(otherlv_0, grammarAccess.getGoto_statementAccess().getGotoKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4702:1: ( (lv_label_1_0= ruleLABEL ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4703:1: (lv_label_1_0= ruleLABEL )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4703:1: (lv_label_1_0= ruleLABEL )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4704:3: lv_label_1_0= ruleLABEL
            {
             
            	        newCompositeNode(grammarAccess.getGoto_statementAccess().getLabelLABELParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleLABEL_in_rulegoto_statement10841);
            lv_label_1_0=ruleLABEL();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getGoto_statementRule());
            	        }
                   		set(
                   			current, 
                   			"label",
                    		lv_label_1_0, 
                    		"LABEL");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulegoto_statement"


    // $ANTLR start "entryRuleprocedure_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4728:1: entryRuleprocedure_statement returns [EObject current=null] : iv_ruleprocedure_statement= ruleprocedure_statement EOF ;
    public final EObject entryRuleprocedure_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleprocedure_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4729:2: (iv_ruleprocedure_statement= ruleprocedure_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4730:2: iv_ruleprocedure_statement= ruleprocedure_statement EOF
            {
             newCompositeNode(grammarAccess.getProcedure_statementRule()); 
            pushFollow(FOLLOW_ruleprocedure_statement_in_entryRuleprocedure_statement10877);
            iv_ruleprocedure_statement=ruleprocedure_statement();

            state._fsp--;

             current =iv_ruleprocedure_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleprocedure_statement10887); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleprocedure_statement"


    // $ANTLR start "ruleprocedure_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4737:1: ruleprocedure_statement returns [EObject current=null] : ( ( (lv_procedureIdentifier_0_0= ruleprocedure_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )? ) ;
    public final EObject ruleprocedure_statement() throws RecognitionException {
        EObject current = null;

        EObject lv_procedureIdentifier_0_0 = null;

        EObject lv_actualParameterList_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4740:28: ( ( ( (lv_procedureIdentifier_0_0= ruleprocedure_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )? ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4741:1: ( ( (lv_procedureIdentifier_0_0= ruleprocedure_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )? )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4741:1: ( ( (lv_procedureIdentifier_0_0= ruleprocedure_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4741:2: ( (lv_procedureIdentifier_0_0= ruleprocedure_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )?
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4741:2: ( (lv_procedureIdentifier_0_0= ruleprocedure_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4742:1: (lv_procedureIdentifier_0_0= ruleprocedure_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4742:1: (lv_procedureIdentifier_0_0= ruleprocedure_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4743:3: lv_procedureIdentifier_0_0= ruleprocedure_identifier
            {
             
            	        newCompositeNode(grammarAccess.getProcedure_statementAccess().getProcedureIdentifierProcedure_identifierParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleprocedure_identifier_in_ruleprocedure_statement10933);
            lv_procedureIdentifier_0_0=ruleprocedure_identifier();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getProcedure_statementRule());
            	        }
                   		set(
                   			current, 
                   			"procedureIdentifier",
                    		lv_procedureIdentifier_0_0, 
                    		"procedure_identifier");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4759:2: ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )?
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==22) ) {
                alt50=1;
            }
            switch (alt50) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4760:1: (lv_actualParameterList_1_0= ruleactual_parameter_list )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4760:1: (lv_actualParameterList_1_0= ruleactual_parameter_list )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4761:3: lv_actualParameterList_1_0= ruleactual_parameter_list
                    {
                     
                    	        newCompositeNode(grammarAccess.getProcedure_statementAccess().getActualParameterListActual_parameter_listParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleactual_parameter_list_in_ruleprocedure_statement10954);
                    lv_actualParameterList_1_0=ruleactual_parameter_list();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getProcedure_statementRule());
                    	        }
                           		set(
                           			current, 
                           			"actualParameterList",
                            		lv_actualParameterList_1_0, 
                            		"actual_parameter_list");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleprocedure_statement"


    // $ANTLR start "entryRuleassignment_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4785:1: entryRuleassignment_statement returns [EObject current=null] : iv_ruleassignment_statement= ruleassignment_statement EOF ;
    public final EObject entryRuleassignment_statement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleassignment_statement = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4786:2: (iv_ruleassignment_statement= ruleassignment_statement EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4787:2: iv_ruleassignment_statement= ruleassignment_statement EOF
            {
             newCompositeNode(grammarAccess.getAssignment_statementRule()); 
            pushFollow(FOLLOW_ruleassignment_statement_in_entryRuleassignment_statement10991);
            iv_ruleassignment_statement=ruleassignment_statement();

            state._fsp--;

             current =iv_ruleassignment_statement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleassignment_statement11001); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleassignment_statement"


    // $ANTLR start "ruleassignment_statement"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4794:1: ruleassignment_statement returns [EObject current=null] : ( ( (lv_variable_0_0= rulevariable ) ) otherlv_1= ':=' ( (lv_expression_2_0= ruleexpression ) ) ) ;
    public final EObject ruleassignment_statement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_variable_0_0 = null;

        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4797:28: ( ( ( (lv_variable_0_0= rulevariable ) ) otherlv_1= ':=' ( (lv_expression_2_0= ruleexpression ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4798:1: ( ( (lv_variable_0_0= rulevariable ) ) otherlv_1= ':=' ( (lv_expression_2_0= ruleexpression ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4798:1: ( ( (lv_variable_0_0= rulevariable ) ) otherlv_1= ':=' ( (lv_expression_2_0= ruleexpression ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4798:2: ( (lv_variable_0_0= rulevariable ) ) otherlv_1= ':=' ( (lv_expression_2_0= ruleexpression ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4798:2: ( (lv_variable_0_0= rulevariable ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4799:1: (lv_variable_0_0= rulevariable )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4799:1: (lv_variable_0_0= rulevariable )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4800:3: lv_variable_0_0= rulevariable
            {
             
            	        newCompositeNode(grammarAccess.getAssignment_statementAccess().getVariableVariableParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulevariable_in_ruleassignment_statement11047);
            lv_variable_0_0=rulevariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAssignment_statementRule());
            	        }
                   		set(
                   			current, 
                   			"variable",
                    		lv_variable_0_0, 
                    		"variable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,53,FOLLOW_53_in_ruleassignment_statement11059); 

                	newLeafNode(otherlv_1, grammarAccess.getAssignment_statementAccess().getColonEqualsSignKeyword_1());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4820:1: ( (lv_expression_2_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4821:1: (lv_expression_2_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4821:1: (lv_expression_2_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4822:3: lv_expression_2_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getAssignment_statementAccess().getExpressionExpressionParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_ruleassignment_statement11080);
            lv_expression_2_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAssignment_statementRule());
            	        }
                   		set(
                   			current, 
                   			"expression",
                    		lv_expression_2_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleassignment_statement"


    // $ANTLR start "entryRuleexpression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4846:1: entryRuleexpression returns [EObject current=null] : iv_ruleexpression= ruleexpression EOF ;
    public final EObject entryRuleexpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleexpression = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4847:2: (iv_ruleexpression= ruleexpression EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4848:2: iv_ruleexpression= ruleexpression EOF
            {
             newCompositeNode(grammarAccess.getExpressionRule()); 
            pushFollow(FOLLOW_ruleexpression_in_entryRuleexpression11116);
            iv_ruleexpression=ruleexpression();

            state._fsp--;

             current =iv_ruleexpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleexpression11126); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleexpression"


    // $ANTLR start "ruleexpression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4855:1: ruleexpression returns [EObject current=null] : ( ( (lv_leftExpression_0_0= rulesimple_expression ) ) ( ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) ) )? ) ;
    public final EObject ruleexpression() throws RecognitionException {
        EObject current = null;

        Token lv_relOp_1_0=null;
        EObject lv_leftExpression_0_0 = null;

        EObject lv_rightExpression_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4858:28: ( ( ( (lv_leftExpression_0_0= rulesimple_expression ) ) ( ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) ) )? ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4859:1: ( ( (lv_leftExpression_0_0= rulesimple_expression ) ) ( ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) ) )? )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4859:1: ( ( (lv_leftExpression_0_0= rulesimple_expression ) ) ( ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) ) )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4859:2: ( (lv_leftExpression_0_0= rulesimple_expression ) ) ( ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) ) )?
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4859:2: ( (lv_leftExpression_0_0= rulesimple_expression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4860:1: (lv_leftExpression_0_0= rulesimple_expression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4860:1: (lv_leftExpression_0_0= rulesimple_expression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4861:3: lv_leftExpression_0_0= rulesimple_expression
            {
             
            	        newCompositeNode(grammarAccess.getExpressionAccess().getLeftExpressionSimple_expressionParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulesimple_expression_in_ruleexpression11172);
            lv_leftExpression_0_0=rulesimple_expression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExpressionRule());
            	        }
                   		set(
                   			current, 
                   			"leftExpression",
                    		lv_leftExpression_0_0, 
                    		"simple_expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4877:2: ( ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) ) )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( (LA51_0==RULE_RELATIONAL_OPERATOR) ) {
                alt51=1;
            }
            switch (alt51) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4877:3: ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) ) ( (lv_rightExpression_2_0= rulesimple_expression ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4877:3: ( (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4878:1: (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4878:1: (lv_relOp_1_0= RULE_RELATIONAL_OPERATOR )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4879:3: lv_relOp_1_0= RULE_RELATIONAL_OPERATOR
                    {
                    lv_relOp_1_0=(Token)match(input,RULE_RELATIONAL_OPERATOR,FOLLOW_RULE_RELATIONAL_OPERATOR_in_ruleexpression11190); 

                    			newLeafNode(lv_relOp_1_0, grammarAccess.getExpressionAccess().getRelOpRELATIONAL_OPERATORTerminalRuleCall_1_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"relOp",
                            		lv_relOp_1_0, 
                            		"RELATIONAL_OPERATOR");
                    	    

                    }


                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4895:2: ( (lv_rightExpression_2_0= rulesimple_expression ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4896:1: (lv_rightExpression_2_0= rulesimple_expression )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4896:1: (lv_rightExpression_2_0= rulesimple_expression )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4897:3: lv_rightExpression_2_0= rulesimple_expression
                    {
                     
                    	        newCompositeNode(grammarAccess.getExpressionAccess().getRightExpressionSimple_expressionParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulesimple_expression_in_ruleexpression11216);
                    lv_rightExpression_2_0=rulesimple_expression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getExpressionRule());
                    	        }
                           		set(
                           			current, 
                           			"rightExpression",
                            		lv_rightExpression_2_0, 
                            		"simple_expression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleexpression"


    // $ANTLR start "entryRulesimple_expression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4921:1: entryRulesimple_expression returns [EObject current=null] : iv_rulesimple_expression= rulesimple_expression EOF ;
    public final EObject entryRulesimple_expression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulesimple_expression = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4922:2: (iv_rulesimple_expression= rulesimple_expression EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4923:2: iv_rulesimple_expression= rulesimple_expression EOF
            {
             newCompositeNode(grammarAccess.getSimple_expressionRule()); 
            pushFollow(FOLLOW_rulesimple_expression_in_entryRulesimple_expression11254);
            iv_rulesimple_expression=rulesimple_expression();

            state._fsp--;

             current =iv_rulesimple_expression; 
            match(input,EOF,FOLLOW_EOF_in_entryRulesimple_expression11264); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulesimple_expression"


    // $ANTLR start "rulesimple_expression"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4930:1: rulesimple_expression returns [EObject current=null] : ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_leftTerm_1_0= ruleterm ) ) ( ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) ) )* ) ;
    public final EObject rulesimple_expression() throws RecognitionException {
        EObject current = null;

        Token lv_addOps_2_1=null;
        AntlrDatatypeRuleToken lv_sign_0_0 = null;

        EObject lv_leftTerm_1_0 = null;

        AntlrDatatypeRuleToken lv_addOps_2_2 = null;

        EObject lv_rightTerms_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4933:28: ( ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_leftTerm_1_0= ruleterm ) ) ( ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4934:1: ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_leftTerm_1_0= ruleterm ) ) ( ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4934:1: ( ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_leftTerm_1_0= ruleterm ) ) ( ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4934:2: ( (lv_sign_0_0= ruleSIGN ) )? ( (lv_leftTerm_1_0= ruleterm ) ) ( ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4934:2: ( (lv_sign_0_0= ruleSIGN ) )?
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==64) ) {
                alt52=1;
            }
            else if ( (LA52_0==65) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4935:1: (lv_sign_0_0= ruleSIGN )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4935:1: (lv_sign_0_0= ruleSIGN )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4936:3: lv_sign_0_0= ruleSIGN
                    {
                     
                    	        newCompositeNode(grammarAccess.getSimple_expressionAccess().getSignSIGNParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSIGN_in_rulesimple_expression11310);
                    lv_sign_0_0=ruleSIGN();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSimple_expressionRule());
                    	        }
                           		set(
                           			current, 
                           			"sign",
                            		lv_sign_0_0, 
                            		"SIGN");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4952:3: ( (lv_leftTerm_1_0= ruleterm ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4953:1: (lv_leftTerm_1_0= ruleterm )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4953:1: (lv_leftTerm_1_0= ruleterm )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4954:3: lv_leftTerm_1_0= ruleterm
            {
             
            	        newCompositeNode(grammarAccess.getSimple_expressionAccess().getLeftTermTermParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleterm_in_rulesimple_expression11332);
            lv_leftTerm_1_0=ruleterm();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSimple_expressionRule());
            	        }
                   		set(
                   			current, 
                   			"leftTerm",
                    		lv_leftTerm_1_0, 
                    		"term");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4970:2: ( ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) ) )*
            loop54:
            do {
                int alt54=2;
                int LA54_0 = input.LA(1);

                if ( (LA54_0==RULE_ADITION_OPERATOR||(LA54_0>=64 && LA54_0<=65)) ) {
                    alt54=1;
                }


                switch (alt54) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4970:3: ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) ) ( (lv_rightTerms_3_0= ruleterm ) )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4970:3: ( ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4971:1: ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4971:1: ( (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4972:1: (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4972:1: (lv_addOps_2_1= RULE_ADITION_OPERATOR | lv_addOps_2_2= ruleSIGN )
            	    int alt53=2;
            	    int LA53_0 = input.LA(1);

            	    if ( (LA53_0==RULE_ADITION_OPERATOR) ) {
            	        alt53=1;
            	    }
            	    else if ( ((LA53_0>=64 && LA53_0<=65)) ) {
            	        alt53=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 53, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt53) {
            	        case 1 :
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4973:3: lv_addOps_2_1= RULE_ADITION_OPERATOR
            	            {
            	            lv_addOps_2_1=(Token)match(input,RULE_ADITION_OPERATOR,FOLLOW_RULE_ADITION_OPERATOR_in_rulesimple_expression11352); 

            	            			newLeafNode(lv_addOps_2_1, grammarAccess.getSimple_expressionAccess().getAddOpsADITION_OPERATORTerminalRuleCall_2_0_0_0()); 
            	            		

            	            	        if (current==null) {
            	            	            current = createModelElement(grammarAccess.getSimple_expressionRule());
            	            	        }
            	                   		addWithLastConsumed(
            	                   			current, 
            	                   			"addOps",
            	                    		lv_addOps_2_1, 
            	                    		"ADITION_OPERATOR");
            	            	    

            	            }
            	            break;
            	        case 2 :
            	            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:4988:8: lv_addOps_2_2= ruleSIGN
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getSimple_expressionAccess().getAddOpsSIGNParserRuleCall_2_0_0_1()); 
            	            	    
            	            pushFollow(FOLLOW_ruleSIGN_in_rulesimple_expression11376);
            	            lv_addOps_2_2=ruleSIGN();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getSimple_expressionRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"addOps",
            	                    		lv_addOps_2_2, 
            	                    		"SIGN");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5006:2: ( (lv_rightTerms_3_0= ruleterm ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5007:1: (lv_rightTerms_3_0= ruleterm )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5007:1: (lv_rightTerms_3_0= ruleterm )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5008:3: lv_rightTerms_3_0= ruleterm
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSimple_expressionAccess().getRightTermsTermParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleterm_in_rulesimple_expression11400);
            	    lv_rightTerms_3_0=ruleterm();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSimple_expressionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"rightTerms",
            	            		lv_rightTerms_3_0, 
            	            		"term");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop54;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulesimple_expression"


    // $ANTLR start "entryRuleterm"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5032:1: entryRuleterm returns [EObject current=null] : iv_ruleterm= ruleterm EOF ;
    public final EObject entryRuleterm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleterm = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5033:2: (iv_ruleterm= ruleterm EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5034:2: iv_ruleterm= ruleterm EOF
            {
             newCompositeNode(grammarAccess.getTermRule()); 
            pushFollow(FOLLOW_ruleterm_in_entryRuleterm11438);
            iv_ruleterm=ruleterm();

            state._fsp--;

             current =iv_ruleterm; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleterm11448); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleterm"


    // $ANTLR start "ruleterm"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5041:1: ruleterm returns [EObject current=null] : ( ( (lv_leftFactor_0_0= rulefactor ) ) ( ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) ) )* ) ;
    public final EObject ruleterm() throws RecognitionException {
        EObject current = null;

        Token lv_multops_1_0=null;
        EObject lv_leftFactor_0_0 = null;

        EObject lv_rightFactors_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5044:28: ( ( ( (lv_leftFactor_0_0= rulefactor ) ) ( ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5045:1: ( ( (lv_leftFactor_0_0= rulefactor ) ) ( ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5045:1: ( ( (lv_leftFactor_0_0= rulefactor ) ) ( ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5045:2: ( (lv_leftFactor_0_0= rulefactor ) ) ( ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5045:2: ( (lv_leftFactor_0_0= rulefactor ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5046:1: (lv_leftFactor_0_0= rulefactor )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5046:1: (lv_leftFactor_0_0= rulefactor )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5047:3: lv_leftFactor_0_0= rulefactor
            {
             
            	        newCompositeNode(grammarAccess.getTermAccess().getLeftFactorFactorParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulefactor_in_ruleterm11494);
            lv_leftFactor_0_0=rulefactor();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTermRule());
            	        }
                   		set(
                   			current, 
                   			"leftFactor",
                    		lv_leftFactor_0_0, 
                    		"factor");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5063:2: ( ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) ) )*
            loop55:
            do {
                int alt55=2;
                int LA55_0 = input.LA(1);

                if ( (LA55_0==RULE_MULTIPLICATION_OPERATOR) ) {
                    alt55=1;
                }


                switch (alt55) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5063:3: ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) ) ( (lv_rightFactors_2_0= rulefactor ) )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5063:3: ( (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5064:1: (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5064:1: (lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5065:3: lv_multops_1_0= RULE_MULTIPLICATION_OPERATOR
            	    {
            	    lv_multops_1_0=(Token)match(input,RULE_MULTIPLICATION_OPERATOR,FOLLOW_RULE_MULTIPLICATION_OPERATOR_in_ruleterm11512); 

            	    			newLeafNode(lv_multops_1_0, grammarAccess.getTermAccess().getMultopsMULTIPLICATION_OPERATORTerminalRuleCall_1_0_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getTermRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"multops",
            	            		lv_multops_1_0, 
            	            		"MULTIPLICATION_OPERATOR");
            	    	    

            	    }


            	    }

            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5081:2: ( (lv_rightFactors_2_0= rulefactor ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5082:1: (lv_rightFactors_2_0= rulefactor )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5082:1: (lv_rightFactors_2_0= rulefactor )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5083:3: lv_rightFactors_2_0= rulefactor
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTermAccess().getRightFactorsFactorParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_rulefactor_in_ruleterm11538);
            	    lv_rightFactors_2_0=rulefactor();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTermRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"rightFactors",
            	            		lv_rightFactors_2_0, 
            	            		"factor");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop55;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleterm"


    // $ANTLR start "entryRulefactor"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5107:1: entryRulefactor returns [EObject current=null] : iv_rulefactor= rulefactor EOF ;
    public final EObject entryRulefactor() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefactor = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5108:2: (iv_rulefactor= rulefactor EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5109:2: iv_rulefactor= rulefactor EOF
            {
             newCompositeNode(grammarAccess.getFactorRule()); 
            pushFollow(FOLLOW_rulefactor_in_entryRulefactor11576);
            iv_rulefactor=rulefactor();

            state._fsp--;

             current =iv_rulefactor; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefactor11586); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefactor"


    // $ANTLR start "rulefactor"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5116:1: rulefactor returns [EObject current=null] : (this_variable_0= rulevariable | ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) | ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER ) | this_STRG_5= RULE_STRG | this_set_6= ruleset | otherlv_7= 'nil' | this_function_designator_8= rulefunction_designator | (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' ) | (otherlv_12= 'not' this_factor_13= rulefactor ) ) ;
    public final EObject rulefactor() throws RecognitionException {
        EObject current = null;

        Token this_STRG_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        EObject this_variable_0 = null;

        EObject this_DIGIT_SEQUENCE_2 = null;

        EObject this_REAL_NUMBER_4 = null;

        EObject this_set_6 = null;

        EObject this_function_designator_8 = null;

        EObject this_expression_10 = null;

        EObject this_factor_13 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5119:28: ( (this_variable_0= rulevariable | ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) | ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER ) | this_STRG_5= RULE_STRG | this_set_6= ruleset | otherlv_7= 'nil' | this_function_designator_8= rulefunction_designator | (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' ) | (otherlv_12= 'not' this_factor_13= rulefactor ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5120:1: (this_variable_0= rulevariable | ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) | ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER ) | this_STRG_5= RULE_STRG | this_set_6= ruleset | otherlv_7= 'nil' | this_function_designator_8= rulefunction_designator | (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' ) | (otherlv_12= 'not' this_factor_13= rulefactor ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5120:1: (this_variable_0= rulevariable | ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) | ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER ) | this_STRG_5= RULE_STRG | this_set_6= ruleset | otherlv_7= 'nil' | this_function_designator_8= rulefunction_designator | (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' ) | (otherlv_12= 'not' this_factor_13= rulefactor ) )
            int alt58=9;
            alt58 = dfa58.predict(input);
            switch (alt58) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5121:5: this_variable_0= rulevariable
                    {
                     
                            newCompositeNode(grammarAccess.getFactorAccess().getVariableParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulevariable_in_rulefactor11633);
                    this_variable_0=rulevariable();

                    state._fsp--;

                     
                            current = this_variable_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5130:6: ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5130:6: ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5130:7: ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5130:7: ( ruleSIGN )?
                    int alt56=2;
                    int LA56_0 = input.LA(1);

                    if ( (LA56_0==64) ) {
                        alt56=1;
                    }
                    else if ( (LA56_0==65) ) {
                        alt56=1;
                    }
                    switch (alt56) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5131:5: ruleSIGN
                            {
                             
                                    newCompositeNode(grammarAccess.getFactorAccess().getSIGNParserRuleCall_1_0()); 
                                
                            pushFollow(FOLLOW_ruleSIGN_in_rulefactor11656);
                            ruleSIGN();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                     
                            newCompositeNode(grammarAccess.getFactorAccess().getDIGIT_SEQUENCEParserRuleCall_1_1()); 
                        
                    pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_rulefactor11679);
                    this_DIGIT_SEQUENCE_2=ruleDIGIT_SEQUENCE();

                    state._fsp--;

                     
                            current = this_DIGIT_SEQUENCE_2; 
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5148:6: ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5148:6: ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5148:7: ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5148:7: ( ruleSIGN )?
                    int alt57=2;
                    int LA57_0 = input.LA(1);

                    if ( (LA57_0==64) ) {
                        alt57=1;
                    }
                    else if ( (LA57_0==65) ) {
                        alt57=1;
                    }
                    switch (alt57) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5149:5: ruleSIGN
                            {
                             
                                    newCompositeNode(grammarAccess.getFactorAccess().getSIGNParserRuleCall_2_0()); 
                                
                            pushFollow(FOLLOW_ruleSIGN_in_rulefactor11703);
                            ruleSIGN();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                     
                            newCompositeNode(grammarAccess.getFactorAccess().getREAL_NUMBERParserRuleCall_2_1()); 
                        
                    pushFollow(FOLLOW_ruleREAL_NUMBER_in_rulefactor11726);
                    this_REAL_NUMBER_4=ruleREAL_NUMBER();

                    state._fsp--;

                     
                            current = this_REAL_NUMBER_4; 
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;
                case 4 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5166:6: this_STRG_5= RULE_STRG
                    {
                    this_STRG_5=(Token)match(input,RULE_STRG,FOLLOW_RULE_STRG_in_rulefactor11743); 
                     
                        newLeafNode(this_STRG_5, grammarAccess.getFactorAccess().getSTRGTerminalRuleCall_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5172:5: this_set_6= ruleset
                    {
                     
                            newCompositeNode(grammarAccess.getFactorAccess().getSetParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleset_in_rulefactor11770);
                    this_set_6=ruleset();

                    state._fsp--;

                     
                            current = this_set_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5181:7: otherlv_7= 'nil'
                    {
                    otherlv_7=(Token)match(input,60,FOLLOW_60_in_rulefactor11787); 

                        	newLeafNode(otherlv_7, grammarAccess.getFactorAccess().getNilKeyword_5());
                        

                    }
                    break;
                case 7 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5187:5: this_function_designator_8= rulefunction_designator
                    {
                     
                            newCompositeNode(grammarAccess.getFactorAccess().getFunction_designatorParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_rulefunction_designator_in_rulefactor11815);
                    this_function_designator_8=rulefunction_designator();

                    state._fsp--;

                     
                            current = this_function_designator_8; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 8 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5196:6: (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5196:6: (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5196:8: otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')'
                    {
                    otherlv_9=(Token)match(input,22,FOLLOW_22_in_rulefactor11833); 

                        	newLeafNode(otherlv_9, grammarAccess.getFactorAccess().getLeftParenthesisKeyword_7_0());
                        
                     
                            newCompositeNode(grammarAccess.getFactorAccess().getExpressionParserRuleCall_7_1()); 
                        
                    pushFollow(FOLLOW_ruleexpression_in_rulefactor11855);
                    this_expression_10=ruleexpression();

                    state._fsp--;

                     
                            current = this_expression_10; 
                            afterParserOrEnumRuleCall();
                        
                    otherlv_11=(Token)match(input,23,FOLLOW_23_in_rulefactor11866); 

                        	newLeafNode(otherlv_11, grammarAccess.getFactorAccess().getRightParenthesisKeyword_7_2());
                        

                    }


                    }
                    break;
                case 9 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5214:6: (otherlv_12= 'not' this_factor_13= rulefactor )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5214:6: (otherlv_12= 'not' this_factor_13= rulefactor )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5214:8: otherlv_12= 'not' this_factor_13= rulefactor
                    {
                    otherlv_12=(Token)match(input,61,FOLLOW_61_in_rulefactor11886); 

                        	newLeafNode(otherlv_12, grammarAccess.getFactorAccess().getNotKeyword_8_0());
                        
                     
                            newCompositeNode(grammarAccess.getFactorAccess().getFactorParserRuleCall_8_1()); 
                        
                    pushFollow(FOLLOW_rulefactor_in_rulefactor11908);
                    this_factor_13=rulefactor();

                    state._fsp--;

                     
                            current = this_factor_13; 
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefactor"


    // $ANTLR start "entryRulefunction_designator"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5235:1: entryRulefunction_designator returns [EObject current=null] : iv_rulefunction_designator= rulefunction_designator EOF ;
    public final EObject entryRulefunction_designator() throws RecognitionException {
        EObject current = null;

        EObject iv_rulefunction_designator = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5236:2: (iv_rulefunction_designator= rulefunction_designator EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5237:2: iv_rulefunction_designator= rulefunction_designator EOF
            {
             newCompositeNode(grammarAccess.getFunction_designatorRule()); 
            pushFollow(FOLLOW_rulefunction_designator_in_entryRulefunction_designator11944);
            iv_rulefunction_designator=rulefunction_designator();

            state._fsp--;

             current =iv_rulefunction_designator; 
            match(input,EOF,FOLLOW_EOF_in_entryRulefunction_designator11954); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulefunction_designator"


    // $ANTLR start "rulefunction_designator"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5244:1: rulefunction_designator returns [EObject current=null] : ( ( (lv_functionIdentifier_0_0= rulefunction_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) ) ) ;
    public final EObject rulefunction_designator() throws RecognitionException {
        EObject current = null;

        EObject lv_functionIdentifier_0_0 = null;

        EObject lv_actualParameterList_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5247:28: ( ( ( (lv_functionIdentifier_0_0= rulefunction_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5248:1: ( ( (lv_functionIdentifier_0_0= rulefunction_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5248:1: ( ( (lv_functionIdentifier_0_0= rulefunction_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5248:2: ( (lv_functionIdentifier_0_0= rulefunction_identifier ) ) ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5248:2: ( (lv_functionIdentifier_0_0= rulefunction_identifier ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5249:1: (lv_functionIdentifier_0_0= rulefunction_identifier )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5249:1: (lv_functionIdentifier_0_0= rulefunction_identifier )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5250:3: lv_functionIdentifier_0_0= rulefunction_identifier
            {
             
            	        newCompositeNode(grammarAccess.getFunction_designatorAccess().getFunctionIdentifierFunction_identifierParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulefunction_identifier_in_rulefunction_designator12000);
            lv_functionIdentifier_0_0=rulefunction_identifier();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunction_designatorRule());
            	        }
                   		set(
                   			current, 
                   			"functionIdentifier",
                    		lv_functionIdentifier_0_0, 
                    		"function_identifier");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5266:2: ( (lv_actualParameterList_1_0= ruleactual_parameter_list ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5267:1: (lv_actualParameterList_1_0= ruleactual_parameter_list )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5267:1: (lv_actualParameterList_1_0= ruleactual_parameter_list )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5268:3: lv_actualParameterList_1_0= ruleactual_parameter_list
            {
             
            	        newCompositeNode(grammarAccess.getFunction_designatorAccess().getActualParameterListActual_parameter_listParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleactual_parameter_list_in_rulefunction_designator12021);
            lv_actualParameterList_1_0=ruleactual_parameter_list();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunction_designatorRule());
            	        }
                   		set(
                   			current, 
                   			"actualParameterList",
                    		lv_actualParameterList_1_0, 
                    		"actual_parameter_list");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulefunction_designator"


    // $ANTLR start "entryRuleactual_parameter_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5292:1: entryRuleactual_parameter_list returns [EObject current=null] : iv_ruleactual_parameter_list= ruleactual_parameter_list EOF ;
    public final EObject entryRuleactual_parameter_list() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleactual_parameter_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5293:2: (iv_ruleactual_parameter_list= ruleactual_parameter_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5294:2: iv_ruleactual_parameter_list= ruleactual_parameter_list EOF
            {
             newCompositeNode(grammarAccess.getActual_parameter_listRule()); 
            pushFollow(FOLLOW_ruleactual_parameter_list_in_entryRuleactual_parameter_list12057);
            iv_ruleactual_parameter_list=ruleactual_parameter_list();

            state._fsp--;

             current =iv_ruleactual_parameter_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleactual_parameter_list12067); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleactual_parameter_list"


    // $ANTLR start "ruleactual_parameter_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5301:1: ruleactual_parameter_list returns [EObject current=null] : (otherlv_0= '(' ( (lv_actualParameters_1_0= ruleactual_parameter ) ) (otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) ) )* otherlv_4= ')' ) ;
    public final EObject ruleactual_parameter_list() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_actualParameters_1_0 = null;

        EObject lv_actualParameters_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5304:28: ( (otherlv_0= '(' ( (lv_actualParameters_1_0= ruleactual_parameter ) ) (otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) ) )* otherlv_4= ')' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5305:1: (otherlv_0= '(' ( (lv_actualParameters_1_0= ruleactual_parameter ) ) (otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) ) )* otherlv_4= ')' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5305:1: (otherlv_0= '(' ( (lv_actualParameters_1_0= ruleactual_parameter ) ) (otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) ) )* otherlv_4= ')' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5305:3: otherlv_0= '(' ( (lv_actualParameters_1_0= ruleactual_parameter ) ) (otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) ) )* otherlv_4= ')'
            {
            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleactual_parameter_list12104); 

                	newLeafNode(otherlv_0, grammarAccess.getActual_parameter_listAccess().getLeftParenthesisKeyword_0());
                
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5309:1: ( (lv_actualParameters_1_0= ruleactual_parameter ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5310:1: (lv_actualParameters_1_0= ruleactual_parameter )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5310:1: (lv_actualParameters_1_0= ruleactual_parameter )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5311:3: lv_actualParameters_1_0= ruleactual_parameter
            {
             
            	        newCompositeNode(grammarAccess.getActual_parameter_listAccess().getActualParametersActual_parameterParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleactual_parameter_in_ruleactual_parameter_list12125);
            lv_actualParameters_1_0=ruleactual_parameter();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getActual_parameter_listRule());
            	        }
                   		add(
                   			current, 
                   			"actualParameters",
                    		lv_actualParameters_1_0, 
                    		"actual_parameter");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5327:2: (otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) ) )*
            loop59:
            do {
                int alt59=2;
                int LA59_0 = input.LA(1);

                if ( (LA59_0==25) ) {
                    alt59=1;
                }


                switch (alt59) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5327:4: otherlv_2= ',' ( (lv_actualParameters_3_0= ruleactual_parameter ) )
            	    {
            	    otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleactual_parameter_list12138); 

            	        	newLeafNode(otherlv_2, grammarAccess.getActual_parameter_listAccess().getCommaKeyword_2_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5331:1: ( (lv_actualParameters_3_0= ruleactual_parameter ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5332:1: (lv_actualParameters_3_0= ruleactual_parameter )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5332:1: (lv_actualParameters_3_0= ruleactual_parameter )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5333:3: lv_actualParameters_3_0= ruleactual_parameter
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getActual_parameter_listAccess().getActualParametersActual_parameterParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleactual_parameter_in_ruleactual_parameter_list12159);
            	    lv_actualParameters_3_0=ruleactual_parameter();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getActual_parameter_listRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"actualParameters",
            	            		lv_actualParameters_3_0, 
            	            		"actual_parameter");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop59;
                }
            } while (true);

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleactual_parameter_list12173); 

                	newLeafNode(otherlv_4, grammarAccess.getActual_parameter_listAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleactual_parameter_list"


    // $ANTLR start "entryRuleactual_parameter"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5361:1: entryRuleactual_parameter returns [EObject current=null] : iv_ruleactual_parameter= ruleactual_parameter EOF ;
    public final EObject entryRuleactual_parameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleactual_parameter = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5362:2: (iv_ruleactual_parameter= ruleactual_parameter EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5363:2: iv_ruleactual_parameter= ruleactual_parameter EOF
            {
             newCompositeNode(grammarAccess.getActual_parameterRule()); 
            pushFollow(FOLLOW_ruleactual_parameter_in_entryRuleactual_parameter12209);
            iv_ruleactual_parameter=ruleactual_parameter();

            state._fsp--;

             current =iv_ruleactual_parameter; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleactual_parameter12219); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleactual_parameter"


    // $ANTLR start "ruleactual_parameter"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5370:1: ruleactual_parameter returns [EObject current=null] : this_actual_value_0= ruleactual_value ;
    public final EObject ruleactual_parameter() throws RecognitionException {
        EObject current = null;

        EObject this_actual_value_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5373:28: (this_actual_value_0= ruleactual_value )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5375:5: this_actual_value_0= ruleactual_value
            {
             
                    newCompositeNode(grammarAccess.getActual_parameterAccess().getActual_valueParserRuleCall()); 
                
            pushFollow(FOLLOW_ruleactual_value_in_ruleactual_parameter12265);
            this_actual_value_0=ruleactual_value();

            state._fsp--;

             
                    current = this_actual_value_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleactual_parameter"


    // $ANTLR start "entryRuleactual_value"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5391:1: entryRuleactual_value returns [EObject current=null] : iv_ruleactual_value= ruleactual_value EOF ;
    public final EObject entryRuleactual_value() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleactual_value = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5392:2: (iv_ruleactual_value= ruleactual_value EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5393:2: iv_ruleactual_value= ruleactual_value EOF
            {
             newCompositeNode(grammarAccess.getActual_valueRule()); 
            pushFollow(FOLLOW_ruleactual_value_in_entryRuleactual_value12299);
            iv_ruleactual_value=ruleactual_value();

            state._fsp--;

             current =iv_ruleactual_value; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleactual_value12309); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleactual_value"


    // $ANTLR start "ruleactual_value"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5400:1: ruleactual_value returns [EObject current=null] : this_expression_0= ruleexpression ;
    public final EObject ruleactual_value() throws RecognitionException {
        EObject current = null;

        EObject this_expression_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5403:28: (this_expression_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5405:5: this_expression_0= ruleexpression
            {
             
                    newCompositeNode(grammarAccess.getActual_valueAccess().getExpressionParserRuleCall()); 
                
            pushFollow(FOLLOW_ruleexpression_in_ruleactual_value12355);
            this_expression_0=ruleexpression();

            state._fsp--;

             
                    current = this_expression_0; 
                    afterParserOrEnumRuleCall();
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleactual_value"


    // $ANTLR start "entryRuleset"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5421:1: entryRuleset returns [EObject current=null] : iv_ruleset= ruleset EOF ;
    public final EObject entryRuleset() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleset = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5422:2: (iv_ruleset= ruleset EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5423:2: iv_ruleset= ruleset EOF
            {
             newCompositeNode(grammarAccess.getSetRule()); 
            pushFollow(FOLLOW_ruleset_in_entryRuleset12389);
            iv_ruleset=ruleset();

            state._fsp--;

             current =iv_ruleset; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleset12399); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleset"


    // $ANTLR start "ruleset"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5430:1: ruleset returns [EObject current=null] : (otherlv_0= '[' this_element_list_1= ruleelement_list otherlv_2= ']' ) ;
    public final EObject ruleset() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_element_list_1 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5433:28: ( (otherlv_0= '[' this_element_list_1= ruleelement_list otherlv_2= ']' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5434:1: (otherlv_0= '[' this_element_list_1= ruleelement_list otherlv_2= ']' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5434:1: (otherlv_0= '[' this_element_list_1= ruleelement_list otherlv_2= ']' )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5434:3: otherlv_0= '[' this_element_list_1= ruleelement_list otherlv_2= ']'
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleset12436); 

                	newLeafNode(otherlv_0, grammarAccess.getSetAccess().getLeftSquareBracketKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getSetAccess().getElement_listParserRuleCall_1()); 
                
            pushFollow(FOLLOW_ruleelement_list_in_ruleset12458);
            this_element_list_1=ruleelement_list();

            state._fsp--;

             
                    current = this_element_list_1; 
                    afterParserOrEnumRuleCall();
                
            otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleset12469); 

                	newLeafNode(otherlv_2, grammarAccess.getSetAccess().getRightSquareBracketKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleset"


    // $ANTLR start "entryRuleelement_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5459:1: entryRuleelement_list returns [EObject current=null] : iv_ruleelement_list= ruleelement_list EOF ;
    public final EObject entryRuleelement_list() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleelement_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5460:2: (iv_ruleelement_list= ruleelement_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5461:2: iv_ruleelement_list= ruleelement_list EOF
            {
             newCompositeNode(grammarAccess.getElement_listRule()); 
            pushFollow(FOLLOW_ruleelement_list_in_entryRuleelement_list12505);
            iv_ruleelement_list=ruleelement_list();

            state._fsp--;

             current =iv_ruleelement_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleelement_list12515); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleelement_list"


    // $ANTLR start "ruleelement_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5468:1: ruleelement_list returns [EObject current=null] : ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* ) ;
    public final EObject ruleelement_list() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expressions_0_0 = null;

        EObject lv_expressions_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5471:28: ( ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5472:1: ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5472:1: ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5472:2: ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5472:2: ( (lv_expressions_0_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5473:1: (lv_expressions_0_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5473:1: (lv_expressions_0_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5474:3: lv_expressions_0_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getElement_listAccess().getExpressionsExpressionParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_ruleelement_list12561);
            lv_expressions_0_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getElement_listRule());
            	        }
                   		add(
                   			current, 
                   			"expressions",
                    		lv_expressions_0_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5490:2: (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )*
            loop60:
            do {
                int alt60=2;
                int LA60_0 = input.LA(1);

                if ( (LA60_0==25) ) {
                    alt60=1;
                }


                switch (alt60) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5490:4: otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleelement_list12574); 

            	        	newLeafNode(otherlv_1, grammarAccess.getElement_listAccess().getCommaKeyword_1_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5494:1: ( (lv_expressions_2_0= ruleexpression ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5495:1: (lv_expressions_2_0= ruleexpression )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5495:1: (lv_expressions_2_0= ruleexpression )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5496:3: lv_expressions_2_0= ruleexpression
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getElement_listAccess().getExpressionsExpressionParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleexpression_in_ruleelement_list12595);
            	    lv_expressions_2_0=ruleexpression();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getElement_listRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"expressions",
            	            		lv_expressions_2_0, 
            	            		"expression");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop60;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleelement_list"


    // $ANTLR start "entryRulevariable"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5520:1: entryRulevariable returns [EObject current=null] : iv_rulevariable= rulevariable EOF ;
    public final EObject entryRulevariable() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariable = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5521:2: (iv_rulevariable= rulevariable EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5522:2: iv_rulevariable= rulevariable EOF
            {
             newCompositeNode(grammarAccess.getVariableRule()); 
            pushFollow(FOLLOW_rulevariable_in_entryRulevariable12633);
            iv_rulevariable=rulevariable();

            state._fsp--;

             current =iv_rulevariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariable12643); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariable"


    // $ANTLR start "rulevariable"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5529:1: rulevariable returns [EObject current=null] : ( ( (lv_name_0_0= RULE_IDENTIFIER ) ) ( (lv_variableL_1_0= rulevariable_l ) ) ) ;
    public final EObject rulevariable() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_variableL_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5532:28: ( ( ( (lv_name_0_0= RULE_IDENTIFIER ) ) ( (lv_variableL_1_0= rulevariable_l ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5533:1: ( ( (lv_name_0_0= RULE_IDENTIFIER ) ) ( (lv_variableL_1_0= rulevariable_l ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5533:1: ( ( (lv_name_0_0= RULE_IDENTIFIER ) ) ( (lv_variableL_1_0= rulevariable_l ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5533:2: ( (lv_name_0_0= RULE_IDENTIFIER ) ) ( (lv_variableL_1_0= rulevariable_l ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5533:2: ( (lv_name_0_0= RULE_IDENTIFIER ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5534:1: (lv_name_0_0= RULE_IDENTIFIER )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5534:1: (lv_name_0_0= RULE_IDENTIFIER )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5535:3: lv_name_0_0= RULE_IDENTIFIER
            {
            lv_name_0_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulevariable12685); 

            			newLeafNode(lv_name_0_0, grammarAccess.getVariableAccess().getNameIDENTIFIERTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"IDENTIFIER");
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5551:2: ( (lv_variableL_1_0= rulevariable_l ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5552:1: (lv_variableL_1_0= rulevariable_l )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5552:1: (lv_variableL_1_0= rulevariable_l )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5553:3: lv_variableL_1_0= rulevariable_l
            {
             
            	        newCompositeNode(grammarAccess.getVariableAccess().getVariableLVariable_lParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulevariable_l_in_rulevariable12711);
            lv_variableL_1_0=rulevariable_l();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariableRule());
            	        }
                   		set(
                   			current, 
                   			"variableL",
                    		lv_variableL_1_0, 
                    		"variable_l");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariable"


    // $ANTLR start "entryRulevariable_l"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5577:1: entryRulevariable_l returns [EObject current=null] : iv_rulevariable_l= rulevariable_l EOF ;
    public final EObject entryRulevariable_l() throws RecognitionException {
        EObject current = null;

        EObject iv_rulevariable_l = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5578:2: (iv_rulevariable_l= rulevariable_l EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5579:2: iv_rulevariable_l= rulevariable_l EOF
            {
             newCompositeNode(grammarAccess.getVariable_lRule()); 
            pushFollow(FOLLOW_rulevariable_l_in_entryRulevariable_l12747);
            iv_rulevariable_l=rulevariable_l();

            state._fsp--;

             current =iv_rulevariable_l; 
            match(input,EOF,FOLLOW_EOF_in_entryRulevariable_l12757); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulevariable_l"


    // $ANTLR start "rulevariable_l"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5586:1: rulevariable_l returns [EObject current=null] : ( () ( (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) ) | (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) ) | (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) ) )? ) ;
    public final EObject rulevariable_l() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token lv_identifier_6_0=null;
        Token otherlv_8=null;
        EObject lv_expressionList_2_0 = null;

        EObject lv_variableL_4_0 = null;

        EObject lv_variableL_7_0 = null;

        EObject lv_variableL_9_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5589:28: ( ( () ( (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) ) | (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) ) | (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) ) )? ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5590:1: ( () ( (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) ) | (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) ) | (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) ) )? )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5590:1: ( () ( (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) ) | (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) ) | (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) ) )? )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5590:2: () ( (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) ) | (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) ) | (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) ) )?
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5590:2: ()
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5591:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getVariable_lAccess().getVariableLClassAction_0(),
                        current);
                

            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5596:2: ( (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) ) | (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) ) | (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) ) )?
            int alt61=4;
            switch ( input.LA(1) ) {
                case 31:
                    {
                    alt61=1;
                    }
                    break;
                case 20:
                    {
                    alt61=2;
                    }
                    break;
                case 40:
                    {
                    alt61=3;
                    }
                    break;
            }

            switch (alt61) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5596:3: (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5596:3: (otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5596:5: otherlv_1= '[' ( (lv_expressionList_2_0= ruleexpression_list ) ) otherlv_3= ']' ( (lv_variableL_4_0= rulevariable_l ) )
                    {
                    otherlv_1=(Token)match(input,31,FOLLOW_31_in_rulevariable_l12805); 

                        	newLeafNode(otherlv_1, grammarAccess.getVariable_lAccess().getLeftSquareBracketKeyword_1_0_0());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5600:1: ( (lv_expressionList_2_0= ruleexpression_list ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5601:1: (lv_expressionList_2_0= ruleexpression_list )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5601:1: (lv_expressionList_2_0= ruleexpression_list )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5602:3: lv_expressionList_2_0= ruleexpression_list
                    {
                     
                    	        newCompositeNode(grammarAccess.getVariable_lAccess().getExpressionListExpression_listParserRuleCall_1_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleexpression_list_in_rulevariable_l12826);
                    lv_expressionList_2_0=ruleexpression_list();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getVariable_lRule());
                    	        }
                           		set(
                           			current, 
                           			"expressionList",
                            		lv_expressionList_2_0, 
                            		"expression_list");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_3=(Token)match(input,32,FOLLOW_32_in_rulevariable_l12838); 

                        	newLeafNode(otherlv_3, grammarAccess.getVariable_lAccess().getRightSquareBracketKeyword_1_0_2());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5622:1: ( (lv_variableL_4_0= rulevariable_l ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5623:1: (lv_variableL_4_0= rulevariable_l )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5623:1: (lv_variableL_4_0= rulevariable_l )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5624:3: lv_variableL_4_0= rulevariable_l
                    {
                     
                    	        newCompositeNode(grammarAccess.getVariable_lAccess().getVariableLVariable_lParserRuleCall_1_0_3_0()); 
                    	    
                    pushFollow(FOLLOW_rulevariable_l_in_rulevariable_l12859);
                    lv_variableL_4_0=rulevariable_l();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getVariable_lRule());
                    	        }
                           		set(
                           			current, 
                           			"variableL",
                            		lv_variableL_4_0, 
                            		"variable_l");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5641:6: (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5641:6: (otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5641:8: otherlv_5= '.' ( (lv_identifier_6_0= RULE_IDENTIFIER ) ) ( (lv_variableL_7_0= rulevariable_l ) )
                    {
                    otherlv_5=(Token)match(input,20,FOLLOW_20_in_rulevariable_l12879); 

                        	newLeafNode(otherlv_5, grammarAccess.getVariable_lAccess().getFullStopKeyword_1_1_0());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5645:1: ( (lv_identifier_6_0= RULE_IDENTIFIER ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5646:1: (lv_identifier_6_0= RULE_IDENTIFIER )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5646:1: (lv_identifier_6_0= RULE_IDENTIFIER )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5647:3: lv_identifier_6_0= RULE_IDENTIFIER
                    {
                    lv_identifier_6_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_rulevariable_l12896); 

                    			newLeafNode(lv_identifier_6_0, grammarAccess.getVariable_lAccess().getIdentifierIDENTIFIERTerminalRuleCall_1_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getVariable_lRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"identifier",
                            		lv_identifier_6_0, 
                            		"IDENTIFIER");
                    	    

                    }


                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5663:2: ( (lv_variableL_7_0= rulevariable_l ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5664:1: (lv_variableL_7_0= rulevariable_l )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5664:1: (lv_variableL_7_0= rulevariable_l )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5665:3: lv_variableL_7_0= rulevariable_l
                    {
                     
                    	        newCompositeNode(grammarAccess.getVariable_lAccess().getVariableLVariable_lParserRuleCall_1_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_rulevariable_l_in_rulevariable_l12922);
                    lv_variableL_7_0=rulevariable_l();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getVariable_lRule());
                    	        }
                           		set(
                           			current, 
                           			"variableL",
                            		lv_variableL_7_0, 
                            		"variable_l");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5682:6: (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5682:6: (otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5682:8: otherlv_8= '^' ( (lv_variableL_9_0= rulevariable_l ) )
                    {
                    otherlv_8=(Token)match(input,40,FOLLOW_40_in_rulevariable_l12942); 

                        	newLeafNode(otherlv_8, grammarAccess.getVariable_lAccess().getCircumflexAccentKeyword_1_2_0());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5686:1: ( (lv_variableL_9_0= rulevariable_l ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5687:1: (lv_variableL_9_0= rulevariable_l )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5687:1: (lv_variableL_9_0= rulevariable_l )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5688:3: lv_variableL_9_0= rulevariable_l
                    {
                     
                    	        newCompositeNode(grammarAccess.getVariable_lAccess().getVariableLVariable_lParserRuleCall_1_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulevariable_l_in_rulevariable_l12963);
                    lv_variableL_9_0=rulevariable_l();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getVariable_lRule());
                    	        }
                           		set(
                           			current, 
                           			"variableL",
                            		lv_variableL_9_0, 
                            		"variable_l");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulevariable_l"


    // $ANTLR start "entryRuleexpression_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5712:1: entryRuleexpression_list returns [EObject current=null] : iv_ruleexpression_list= ruleexpression_list EOF ;
    public final EObject entryRuleexpression_list() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleexpression_list = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5713:2: (iv_ruleexpression_list= ruleexpression_list EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5714:2: iv_ruleexpression_list= ruleexpression_list EOF
            {
             newCompositeNode(grammarAccess.getExpression_listRule()); 
            pushFollow(FOLLOW_ruleexpression_list_in_entryRuleexpression_list13002);
            iv_ruleexpression_list=ruleexpression_list();

            state._fsp--;

             current =iv_ruleexpression_list; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleexpression_list13012); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleexpression_list"


    // $ANTLR start "ruleexpression_list"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5721:1: ruleexpression_list returns [EObject current=null] : ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* ) ;
    public final EObject ruleexpression_list() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expressions_0_0 = null;

        EObject lv_expressions_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5724:28: ( ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5725:1: ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5725:1: ( ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )* )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5725:2: ( (lv_expressions_0_0= ruleexpression ) ) (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )*
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5725:2: ( (lv_expressions_0_0= ruleexpression ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5726:1: (lv_expressions_0_0= ruleexpression )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5726:1: (lv_expressions_0_0= ruleexpression )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5727:3: lv_expressions_0_0= ruleexpression
            {
             
            	        newCompositeNode(grammarAccess.getExpression_listAccess().getExpressionsExpressionParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleexpression_in_ruleexpression_list13058);
            lv_expressions_0_0=ruleexpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExpression_listRule());
            	        }
                   		add(
                   			current, 
                   			"expressions",
                    		lv_expressions_0_0, 
                    		"expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5743:2: (otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) ) )*
            loop62:
            do {
                int alt62=2;
                int LA62_0 = input.LA(1);

                if ( (LA62_0==25) ) {
                    alt62=1;
                }


                switch (alt62) {
            	case 1 :
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5743:4: otherlv_1= ',' ( (lv_expressions_2_0= ruleexpression ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleexpression_list13071); 

            	        	newLeafNode(otherlv_1, grammarAccess.getExpression_listAccess().getCommaKeyword_1_0());
            	        
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5747:1: ( (lv_expressions_2_0= ruleexpression ) )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5748:1: (lv_expressions_2_0= ruleexpression )
            	    {
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5748:1: (lv_expressions_2_0= ruleexpression )
            	    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5749:3: lv_expressions_2_0= ruleexpression
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getExpression_listAccess().getExpressionsExpressionParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleexpression_in_ruleexpression_list13092);
            	    lv_expressions_2_0=ruleexpression();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getExpression_listRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"expressions",
            	            		lv_expressions_2_0, 
            	            		"expression");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop62;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleexpression_list"


    // $ANTLR start "entryRuleconstant"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5773:1: entryRuleconstant returns [EObject current=null] : iv_ruleconstant= ruleconstant EOF ;
    public final EObject entryRuleconstant() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleconstant = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5774:2: (iv_ruleconstant= ruleconstant EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5775:2: iv_ruleconstant= ruleconstant EOF
            {
             newCompositeNode(grammarAccess.getConstantRule()); 
            pushFollow(FOLLOW_ruleconstant_in_entryRuleconstant13130);
            iv_ruleconstant=ruleconstant();

            state._fsp--;

             current =iv_ruleconstant; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleconstant13140); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleconstant"


    // $ANTLR start "ruleconstant"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5782:1: ruleconstant returns [EObject current=null] : ( ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) ) | ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) ) | ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) ) | ( () ( (lv_string_10_0= RULE_STRG ) ) ) ) ;
    public final EObject ruleconstant() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_2_0=null;
        Token lv_string_10_0=null;
        AntlrDatatypeRuleToken lv_sign_1_0 = null;

        AntlrDatatypeRuleToken lv_sign_4_0 = null;

        EObject lv_digitSequence_5_0 = null;

        AntlrDatatypeRuleToken lv_sign_7_0 = null;

        EObject lv_realNumber_8_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5785:28: ( ( ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) ) | ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) ) | ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) ) | ( () ( (lv_string_10_0= RULE_STRG ) ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5786:1: ( ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) ) | ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) ) | ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) ) | ( () ( (lv_string_10_0= RULE_STRG ) ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5786:1: ( ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) ) | ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) ) | ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) ) | ( () ( (lv_string_10_0= RULE_STRG ) ) ) )
            int alt66=4;
            alt66 = dfa66.predict(input);
            switch (alt66) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5786:2: ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5786:2: ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5786:3: () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5786:3: ()
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5787:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getConstantAccess().getConstFromIdAction_0_0(),
                                current);
                        

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5792:2: ( (lv_sign_1_0= ruleSIGN ) )?
                    int alt63=2;
                    int LA63_0 = input.LA(1);

                    if ( ((LA63_0>=64 && LA63_0<=65)) ) {
                        alt63=1;
                    }
                    switch (alt63) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5793:1: (lv_sign_1_0= ruleSIGN )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5793:1: (lv_sign_1_0= ruleSIGN )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5794:3: lv_sign_1_0= ruleSIGN
                            {
                             
                            	        newCompositeNode(grammarAccess.getConstantAccess().getSignSIGNParserRuleCall_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleSIGN_in_ruleconstant13196);
                            lv_sign_1_0=ruleSIGN();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getConstantRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"sign",
                                    		lv_sign_1_0, 
                                    		"SIGN");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5810:3: ( (lv_identifier_2_0= RULE_IDENTIFIER ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5811:1: (lv_identifier_2_0= RULE_IDENTIFIER )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5811:1: (lv_identifier_2_0= RULE_IDENTIFIER )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5812:3: lv_identifier_2_0= RULE_IDENTIFIER
                    {
                    lv_identifier_2_0=(Token)match(input,RULE_IDENTIFIER,FOLLOW_RULE_IDENTIFIER_in_ruleconstant13214); 

                    			newLeafNode(lv_identifier_2_0, grammarAccess.getConstantAccess().getIdentifierIDENTIFIERTerminalRuleCall_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConstantRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"identifier",
                            		lv_identifier_2_0, 
                            		"IDENTIFIER");
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5829:6: ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5829:6: ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5829:7: () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5829:7: ()
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5830:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getConstantAccess().getConstFromDigitSequenceAction_1_0(),
                                current);
                        

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5835:2: ( (lv_sign_4_0= ruleSIGN ) )?
                    int alt64=2;
                    int LA64_0 = input.LA(1);

                    if ( (LA64_0==64) ) {
                        alt64=1;
                    }
                    else if ( (LA64_0==65) ) {
                        alt64=1;
                    }
                    switch (alt64) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5836:1: (lv_sign_4_0= ruleSIGN )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5836:1: (lv_sign_4_0= ruleSIGN )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5837:3: lv_sign_4_0= ruleSIGN
                            {
                             
                            	        newCompositeNode(grammarAccess.getConstantAccess().getSignSIGNParserRuleCall_1_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleSIGN_in_ruleconstant13257);
                            lv_sign_4_0=ruleSIGN();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getConstantRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"sign",
                                    		lv_sign_4_0, 
                                    		"SIGN");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5853:3: ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5854:1: (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5854:1: (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5855:3: lv_digitSequence_5_0= ruleDIGIT_SEQUENCE
                    {
                     
                    	        newCompositeNode(grammarAccess.getConstantAccess().getDigitSequenceDIGIT_SEQUENCEParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_ruleconstant13279);
                    lv_digitSequence_5_0=ruleDIGIT_SEQUENCE();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getConstantRule());
                    	        }
                           		set(
                           			current, 
                           			"digitSequence",
                            		lv_digitSequence_5_0, 
                            		"DIGIT_SEQUENCE");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5872:6: ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5872:6: ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5872:7: () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5872:7: ()
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5873:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getConstantAccess().getConstFromRealAction_2_0(),
                                current);
                        

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5878:2: ( (lv_sign_7_0= ruleSIGN ) )?
                    int alt65=2;
                    int LA65_0 = input.LA(1);

                    if ( (LA65_0==64) ) {
                        alt65=1;
                    }
                    else if ( (LA65_0==65) ) {
                        alt65=1;
                    }
                    switch (alt65) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5879:1: (lv_sign_7_0= ruleSIGN )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5879:1: (lv_sign_7_0= ruleSIGN )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5880:3: lv_sign_7_0= ruleSIGN
                            {
                             
                            	        newCompositeNode(grammarAccess.getConstantAccess().getSignSIGNParserRuleCall_2_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleSIGN_in_ruleconstant13317);
                            lv_sign_7_0=ruleSIGN();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getConstantRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"sign",
                                    		lv_sign_7_0, 
                                    		"SIGN");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5896:3: ( (lv_realNumber_8_0= ruleREAL_NUMBER ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5897:1: (lv_realNumber_8_0= ruleREAL_NUMBER )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5897:1: (lv_realNumber_8_0= ruleREAL_NUMBER )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5898:3: lv_realNumber_8_0= ruleREAL_NUMBER
                    {
                     
                    	        newCompositeNode(grammarAccess.getConstantAccess().getRealNumberREAL_NUMBERParserRuleCall_2_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleREAL_NUMBER_in_ruleconstant13339);
                    lv_realNumber_8_0=ruleREAL_NUMBER();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getConstantRule());
                    	        }
                           		set(
                           			current, 
                           			"realNumber",
                            		lv_realNumber_8_0, 
                            		"REAL_NUMBER");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 4 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5915:6: ( () ( (lv_string_10_0= RULE_STRG ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5915:6: ( () ( (lv_string_10_0= RULE_STRG ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5915:7: () ( (lv_string_10_0= RULE_STRG ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5915:7: ()
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5916:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getConstantAccess().getConstFromStringAction_3_0(),
                                current);
                        

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5921:2: ( (lv_string_10_0= RULE_STRG ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5922:1: (lv_string_10_0= RULE_STRG )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5922:1: (lv_string_10_0= RULE_STRG )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5923:3: lv_string_10_0= RULE_STRG
                    {
                    lv_string_10_0=(Token)match(input,RULE_STRG,FOLLOW_RULE_STRG_in_ruleconstant13373); 

                    			newLeafNode(lv_string_10_0, grammarAccess.getConstantAccess().getStringSTRGTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConstantRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"string",
                            		lv_string_10_0, 
                            		"STRG");
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleconstant"


    // $ANTLR start "entryRuleREAL_NUMBER"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5947:1: entryRuleREAL_NUMBER returns [EObject current=null] : iv_ruleREAL_NUMBER= ruleREAL_NUMBER EOF ;
    public final EObject entryRuleREAL_NUMBER() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleREAL_NUMBER = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5948:2: (iv_ruleREAL_NUMBER= ruleREAL_NUMBER EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5949:2: iv_ruleREAL_NUMBER= ruleREAL_NUMBER EOF
            {
             newCompositeNode(grammarAccess.getREAL_NUMBERRule()); 
            pushFollow(FOLLOW_ruleREAL_NUMBER_in_entryRuleREAL_NUMBER13415);
            iv_ruleREAL_NUMBER=ruleREAL_NUMBER();

            state._fsp--;

             current =iv_ruleREAL_NUMBER; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleREAL_NUMBER13425); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleREAL_NUMBER"


    // $ANTLR start "ruleREAL_NUMBER"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5956:1: ruleREAL_NUMBER returns [EObject current=null] : ( ( ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )? ) | ( ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) ) ) ) ;
    public final EObject ruleREAL_NUMBER() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_unsignedDigitSequence_2_0=null;
        EObject lv_digitSequence_0_0 = null;

        EObject lv_scaleFactor_3_0 = null;

        EObject lv_digitSequence_4_0 = null;

        EObject lv_scaleFactor_5_0 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5959:28: ( ( ( ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )? ) | ( ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) ) ) ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5960:1: ( ( ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )? ) | ( ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) ) ) )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5960:1: ( ( ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )? ) | ( ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) ) ) )
            int alt69=2;
            switch ( input.LA(1) ) {
            case 64:
                {
                int LA69_1 = input.LA(2);

                if ( (LA69_1==RULE_UNSIGNED_DIGIT_SEQUENCE) ) {
                    int LA69_3 = input.LA(3);

                    if ( ((LA69_3>=62 && LA69_3<=63)) ) {
                        alt69=2;
                    }
                    else if ( (LA69_3==20) ) {
                        alt69=1;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 69, 3, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 69, 1, input);

                    throw nvae;
                }
                }
                break;
            case 65:
                {
                int LA69_2 = input.LA(2);

                if ( (LA69_2==RULE_UNSIGNED_DIGIT_SEQUENCE) ) {
                    int LA69_3 = input.LA(3);

                    if ( ((LA69_3>=62 && LA69_3<=63)) ) {
                        alt69=2;
                    }
                    else if ( (LA69_3==20) ) {
                        alt69=1;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 69, 3, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 69, 2, input);

                    throw nvae;
                }
                }
                break;
            case RULE_UNSIGNED_DIGIT_SEQUENCE:
                {
                int LA69_3 = input.LA(2);

                if ( ((LA69_3>=62 && LA69_3<=63)) ) {
                    alt69=2;
                }
                else if ( (LA69_3==20) ) {
                    alt69=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 69, 3, input);

                    throw nvae;
                }
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }

            switch (alt69) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5960:2: ( ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )? )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5960:2: ( ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )? )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5960:3: ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) ) otherlv_1= '.' ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )? ( (lv_scaleFactor_3_0= rulescale_factor ) )?
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5960:3: ( (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5961:1: (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5961:1: (lv_digitSequence_0_0= ruleDIGIT_SEQUENCE )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5962:3: lv_digitSequence_0_0= ruleDIGIT_SEQUENCE
                    {
                     
                    	        newCompositeNode(grammarAccess.getREAL_NUMBERAccess().getDigitSequenceDIGIT_SEQUENCEParserRuleCall_0_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_ruleREAL_NUMBER13472);
                    lv_digitSequence_0_0=ruleDIGIT_SEQUENCE();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getREAL_NUMBERRule());
                    	        }
                           		set(
                           			current, 
                           			"digitSequence",
                            		lv_digitSequence_0_0, 
                            		"DIGIT_SEQUENCE");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,20,FOLLOW_20_in_ruleREAL_NUMBER13484); 

                        	newLeafNode(otherlv_1, grammarAccess.getREAL_NUMBERAccess().getFullStopKeyword_0_1());
                        
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5982:1: ( (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE ) )?
                    int alt67=2;
                    int LA67_0 = input.LA(1);

                    if ( (LA67_0==RULE_UNSIGNED_DIGIT_SEQUENCE) ) {
                        alt67=1;
                    }
                    switch (alt67) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5983:1: (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5983:1: (lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:5984:3: lv_unsignedDigitSequence_2_0= RULE_UNSIGNED_DIGIT_SEQUENCE
                            {
                            lv_unsignedDigitSequence_2_0=(Token)match(input,RULE_UNSIGNED_DIGIT_SEQUENCE,FOLLOW_RULE_UNSIGNED_DIGIT_SEQUENCE_in_ruleREAL_NUMBER13501); 

                            			newLeafNode(lv_unsignedDigitSequence_2_0, grammarAccess.getREAL_NUMBERAccess().getUnsignedDigitSequenceUNSIGNED_DIGIT_SEQUENCETerminalRuleCall_0_2_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getREAL_NUMBERRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"unsignedDigitSequence",
                                    		lv_unsignedDigitSequence_2_0, 
                                    		"UNSIGNED_DIGIT_SEQUENCE");
                            	    

                            }


                            }
                            break;

                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6000:3: ( (lv_scaleFactor_3_0= rulescale_factor ) )?
                    int alt68=2;
                    int LA68_0 = input.LA(1);

                    if ( ((LA68_0>=62 && LA68_0<=63)) ) {
                        alt68=1;
                    }
                    switch (alt68) {
                        case 1 :
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6001:1: (lv_scaleFactor_3_0= rulescale_factor )
                            {
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6001:1: (lv_scaleFactor_3_0= rulescale_factor )
                            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6002:3: lv_scaleFactor_3_0= rulescale_factor
                            {
                             
                            	        newCompositeNode(grammarAccess.getREAL_NUMBERAccess().getScaleFactorScale_factorParserRuleCall_0_3_0()); 
                            	    
                            pushFollow(FOLLOW_rulescale_factor_in_ruleREAL_NUMBER13528);
                            lv_scaleFactor_3_0=rulescale_factor();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getREAL_NUMBERRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"scaleFactor",
                                    		lv_scaleFactor_3_0, 
                                    		"scale_factor");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6019:6: ( ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6019:6: ( ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6019:7: ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) ) ( (lv_scaleFactor_5_0= rulescale_factor ) )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6019:7: ( (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6020:1: (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6020:1: (lv_digitSequence_4_0= ruleDIGIT_SEQUENCE )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6021:3: lv_digitSequence_4_0= ruleDIGIT_SEQUENCE
                    {
                     
                    	        newCompositeNode(grammarAccess.getREAL_NUMBERAccess().getDigitSequenceDIGIT_SEQUENCEParserRuleCall_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_ruleREAL_NUMBER13558);
                    lv_digitSequence_4_0=ruleDIGIT_SEQUENCE();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getREAL_NUMBERRule());
                    	        }
                           		set(
                           			current, 
                           			"digitSequence",
                            		lv_digitSequence_4_0, 
                            		"DIGIT_SEQUENCE");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6037:2: ( (lv_scaleFactor_5_0= rulescale_factor ) )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6038:1: (lv_scaleFactor_5_0= rulescale_factor )
                    {
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6038:1: (lv_scaleFactor_5_0= rulescale_factor )
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6039:3: lv_scaleFactor_5_0= rulescale_factor
                    {
                     
                    	        newCompositeNode(grammarAccess.getREAL_NUMBERAccess().getScaleFactorScale_factorParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulescale_factor_in_ruleREAL_NUMBER13579);
                    lv_scaleFactor_5_0=rulescale_factor();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getREAL_NUMBERRule());
                    	        }
                           		set(
                           			current, 
                           			"scaleFactor",
                            		lv_scaleFactor_5_0, 
                            		"scale_factor");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleREAL_NUMBER"


    // $ANTLR start "entryRulescale_factor"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6063:1: entryRulescale_factor returns [EObject current=null] : iv_rulescale_factor= rulescale_factor EOF ;
    public final EObject entryRulescale_factor() throws RecognitionException {
        EObject current = null;

        EObject iv_rulescale_factor = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6064:2: (iv_rulescale_factor= rulescale_factor EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6065:2: iv_rulescale_factor= rulescale_factor EOF
            {
             newCompositeNode(grammarAccess.getScale_factorRule()); 
            pushFollow(FOLLOW_rulescale_factor_in_entryRulescale_factor13616);
            iv_rulescale_factor=rulescale_factor();

            state._fsp--;

             current =iv_rulescale_factor; 
            match(input,EOF,FOLLOW_EOF_in_entryRulescale_factor13626); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulescale_factor"


    // $ANTLR start "rulescale_factor"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6072:1: rulescale_factor returns [EObject current=null] : ( (otherlv_0= 'E' | otherlv_1= 'e' ) this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) ;
    public final EObject rulescale_factor() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject this_DIGIT_SEQUENCE_2 = null;


         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6075:28: ( ( (otherlv_0= 'E' | otherlv_1= 'e' ) this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6076:1: ( (otherlv_0= 'E' | otherlv_1= 'e' ) this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6076:1: ( (otherlv_0= 'E' | otherlv_1= 'e' ) this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6076:2: (otherlv_0= 'E' | otherlv_1= 'e' ) this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6076:2: (otherlv_0= 'E' | otherlv_1= 'e' )
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==62) ) {
                alt70=1;
            }
            else if ( (LA70_0==63) ) {
                alt70=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 70, 0, input);

                throw nvae;
            }
            switch (alt70) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6076:4: otherlv_0= 'E'
                    {
                    otherlv_0=(Token)match(input,62,FOLLOW_62_in_rulescale_factor13664); 

                        	newLeafNode(otherlv_0, grammarAccess.getScale_factorAccess().getEKeyword_0_0());
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6081:7: otherlv_1= 'e'
                    {
                    otherlv_1=(Token)match(input,63,FOLLOW_63_in_rulescale_factor13682); 

                        	newLeafNode(otherlv_1, grammarAccess.getScale_factorAccess().getEKeyword_0_1());
                        

                    }
                    break;

            }

             
                    newCompositeNode(grammarAccess.getScale_factorAccess().getDIGIT_SEQUENCEParserRuleCall_1()); 
                
            pushFollow(FOLLOW_ruleDIGIT_SEQUENCE_in_rulescale_factor13705);
            this_DIGIT_SEQUENCE_2=ruleDIGIT_SEQUENCE();

            state._fsp--;

             
                    current = this_DIGIT_SEQUENCE_2; 
                    afterParserOrEnumRuleCall();
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulescale_factor"


    // $ANTLR start "entryRuleSIGN"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6102:1: entryRuleSIGN returns [String current=null] : iv_ruleSIGN= ruleSIGN EOF ;
    public final String entryRuleSIGN() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSIGN = null;


        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6103:2: (iv_ruleSIGN= ruleSIGN EOF )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6104:2: iv_ruleSIGN= ruleSIGN EOF
            {
             newCompositeNode(grammarAccess.getSIGNRule()); 
            pushFollow(FOLLOW_ruleSIGN_in_entryRuleSIGN13741);
            iv_ruleSIGN=ruleSIGN();

            state._fsp--;

             current =iv_ruleSIGN.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSIGN13752); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSIGN"


    // $ANTLR start "ruleSIGN"
    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6111:1: ruleSIGN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
    public final AntlrDatatypeRuleToken ruleSIGN() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6114:28: ( (kw= '+' | kw= '-' ) )
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6115:1: (kw= '+' | kw= '-' )
            {
            // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6115:1: (kw= '+' | kw= '-' )
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( (LA71_0==64) ) {
                alt71=1;
            }
            else if ( (LA71_0==65) ) {
                alt71=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 71, 0, input);

                throw nvae;
            }
            switch (alt71) {
                case 1 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6116:2: kw= '+'
                    {
                    kw=(Token)match(input,64,FOLLOW_64_in_ruleSIGN13790); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getSIGNAccess().getPlusSignKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../br.edu.ufcg.dsc.compiladores.pascal/src-gen/br/edu/ufcg/dsc/compiladores/parser/antlr/internal/InternalPascal.g:6123:2: kw= '-'
                    {
                    kw=(Token)match(input,65,FOLLOW_65_in_ruleSIGN13809); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getSIGNAccess().getHyphenMinusKeyword_1()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSIGN"

    // Delegated rules


    protected DFA58 dfa58 = new DFA58(this);
    protected DFA66 dfa66 = new DFA66(this);
    static final String DFA58_eotS =
        "\20\uffff";
    static final String DFA58_eofS =
        "\1\uffff\1\13\2\uffff\1\16\13\uffff";
    static final String DFA58_minS =
        "\1\4\1\7\2\6\1\7\7\uffff\2\6\2\uffff";
    static final String DFA58_maxS =
        "\5\101\7\uffff\2\6\2\uffff";
    static final String DFA58_acceptS =
        "\5\uffff\1\4\1\5\1\6\1\10\1\11\1\7\1\1\2\uffff\1\2\1\3";
    static final String DFA58_specialS =
        "\20\uffff}>";
    static final String[] DFA58_transitionS = {
            "\1\1\1\uffff\1\4\3\uffff\1\5\13\uffff\1\10\10\uffff\1\6\34\uffff\1\7\1\11\2\uffff\1\2\1\3",
            "\3\13\12\uffff\1\13\1\uffff\1\12\3\13\5\uffff\3\13\6\uffff\1\13\3\uffff\1\13\3\uffff\1\13\1\uffff\2\13\2\uffff\2\13\1\uffff\1\13\6\uffff\2\13",
            "\1\4\71\uffff\1\14\1\15",
            "\1\4\71\uffff\1\14\1\15",
            "\3\16\12\uffff\1\17\2\uffff\3\16\6\uffff\2\16\12\uffff\1\16\3\uffff\1\16\1\uffff\2\16\2\uffff\2\16\1\uffff\1\16\4\uffff\2\17\2\16",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\4",
            "\1\4",
            "",
            ""
    };

    static final short[] DFA58_eot = DFA.unpackEncodedString(DFA58_eotS);
    static final short[] DFA58_eof = DFA.unpackEncodedString(DFA58_eofS);
    static final char[] DFA58_min = DFA.unpackEncodedStringToUnsignedChars(DFA58_minS);
    static final char[] DFA58_max = DFA.unpackEncodedStringToUnsignedChars(DFA58_maxS);
    static final short[] DFA58_accept = DFA.unpackEncodedString(DFA58_acceptS);
    static final short[] DFA58_special = DFA.unpackEncodedString(DFA58_specialS);
    static final short[][] DFA58_transition;

    static {
        int numStates = DFA58_transitionS.length;
        DFA58_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA58_transition[i] = DFA.unpackEncodedString(DFA58_transitionS[i]);
        }
    }

    class DFA58 extends DFA {

        public DFA58(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 58;
            this.eot = DFA58_eot;
            this.eof = DFA58_eof;
            this.min = DFA58_min;
            this.max = DFA58_max;
            this.accept = DFA58_accept;
            this.special = DFA58_special;
            this.transition = DFA58_transition;
        }
        public String getDescription() {
            return "5120:1: (this_variable_0= rulevariable | ( ( ruleSIGN )? this_DIGIT_SEQUENCE_2= ruleDIGIT_SEQUENCE ) | ( ( ruleSIGN )? this_REAL_NUMBER_4= ruleREAL_NUMBER ) | this_STRG_5= RULE_STRG | this_set_6= ruleset | otherlv_7= 'nil' | this_function_designator_8= rulefunction_designator | (otherlv_9= '(' this_expression_10= ruleexpression otherlv_11= ')' ) | (otherlv_12= 'not' this_factor_13= rulefactor ) )";
        }
    }
    static final String DFA66_eotS =
        "\12\uffff";
    static final String DFA66_eofS =
        "\4\uffff\1\10\5\uffff";
    static final String DFA66_minS =
        "\3\4\1\uffff\1\24\1\uffff\2\6\2\uffff";
    static final String DFA66_maxS =
        "\3\101\1\uffff\1\77\1\uffff\2\6\2\uffff";
    static final String DFA66_acceptS =
        "\3\uffff\1\1\1\uffff\1\4\2\uffff\1\2\1\3";
    static final String DFA66_specialS =
        "\12\uffff}>";
    static final String[] DFA66_transitionS = {
            "\1\3\1\uffff\1\4\3\uffff\1\5\65\uffff\1\1\1\2",
            "\1\3\1\uffff\1\4\71\uffff\1\6\1\7",
            "\1\3\1\uffff\1\4\71\uffff\1\6\1\7",
            "",
            "\1\11\2\uffff\3\10\2\uffff\1\10\3\uffff\1\10\2\uffff\1\10\10\uffff\1\10\21\uffff\2\11",
            "",
            "\1\4",
            "\1\4",
            "",
            ""
    };

    static final short[] DFA66_eot = DFA.unpackEncodedString(DFA66_eotS);
    static final short[] DFA66_eof = DFA.unpackEncodedString(DFA66_eofS);
    static final char[] DFA66_min = DFA.unpackEncodedStringToUnsignedChars(DFA66_minS);
    static final char[] DFA66_max = DFA.unpackEncodedStringToUnsignedChars(DFA66_maxS);
    static final short[] DFA66_accept = DFA.unpackEncodedString(DFA66_acceptS);
    static final short[] DFA66_special = DFA.unpackEncodedString(DFA66_specialS);
    static final short[][] DFA66_transition;

    static {
        int numStates = DFA66_transitionS.length;
        DFA66_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA66_transition[i] = DFA.unpackEncodedString(DFA66_transitionS[i]);
        }
    }

    class DFA66 extends DFA {

        public DFA66(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 66;
            this.eot = DFA66_eot;
            this.eof = DFA66_eof;
            this.min = DFA66_min;
            this.max = DFA66_max;
            this.accept = DFA66_accept;
            this.special = DFA66_special;
            this.transition = DFA66_transition;
        }
        public String getDescription() {
            return "5786:1: ( ( () ( (lv_sign_1_0= ruleSIGN ) )? ( (lv_identifier_2_0= RULE_IDENTIFIER ) ) ) | ( () ( (lv_sign_4_0= ruleSIGN ) )? ( (lv_digitSequence_5_0= ruleDIGIT_SEQUENCE ) ) ) | ( () ( (lv_sign_7_0= ruleSIGN ) )? ( (lv_realNumber_8_0= ruleREAL_NUMBER ) ) ) | ( () ( (lv_string_10_0= RULE_STRG ) ) ) )";
        }
    }
 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprogram_in_ruleModel130 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_ruleprogram_in_entryRuleprogram166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprogram176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprogram_heading_in_ruleprogram222 = new BitSet(new long[]{0x000000B02C000000L});
    public static final BitSet FOLLOW_ruleblock_in_ruleprogram243 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleprogram255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprogram_heading_in_entryRuleprogram_heading291 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprogram_heading301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleprogram_heading338 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleprogram_heading355 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleprogram_heading372 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_ruleprogram_heading393 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleprogram_heading405 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleprogram_heading417 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleblock_in_entryRuleblock453 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleblock463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruledeclaration_part_in_ruleblock509 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ruleSTATEMENT_PART_in_ruleblock530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_entryRuleidentifier_list566 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleidentifier_list576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleidentifier_list618 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleidentifier_list636 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleidentifier_list653 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruledeclaration_part_in_entryRuledeclaration_part696 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuledeclaration_part706 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulelabel_declaration_part_in_ruledeclaration_part752 = new BitSet(new long[]{0x000000A02C000000L});
    public static final BitSet FOLLOW_ruleconstant_definition_part_in_ruledeclaration_part774 = new BitSet(new long[]{0x000000802C000000L});
    public static final BitSet FOLLOW_ruletype_definition_part_in_ruledeclaration_part796 = new BitSet(new long[]{0x000000002C000000L});
    public static final BitSet FOLLOW_rulevariable_declaration_part_in_ruledeclaration_part818 = new BitSet(new long[]{0x000000000C000000L});
    public static final BitSet FOLLOW_ruleprocedure_and_function_declaration_part_in_ruledeclaration_part840 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_and_function_declaration_part_in_entryRuleprocedure_and_function_declaration_part876 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_and_function_declaration_part886 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_declaration_in_ruleprocedure_and_function_declaration_part943 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_rulefunction_declaration_in_ruleprocedure_and_function_declaration_part970 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleprocedure_and_function_declaration_part983 = new BitSet(new long[]{0x000000000C000002L});
    public static final BitSet FOLLOW_rulefunction_declaration_in_entryRulefunction_declaration1021 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_declaration1031 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_heading_in_rulefunction_declaration1087 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_rulefunction_declaration1099 = new BitSet(new long[]{0x000000B02C000020L});
    public static final BitSet FOLLOW_rulefunction_body_in_rulefunction_declaration1121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DIRECTIVE_in_rulefunction_declaration1138 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_identification_in_rulefunction_declaration1167 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_rulefunction_declaration1179 = new BitSet(new long[]{0x000000B02C000000L});
    public static final BitSet FOLLOW_rulefunction_body_in_rulefunction_declaration1200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_identification_in_entryRulefunction_identification1237 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_identification1247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_rulefunction_identification1284 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulefunction_identifier_in_rulefunction_identification1305 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_identifier_in_entryRulefunction_identifier1341 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_identifier1351 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulefunction_identifier1392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_body_in_entryRulefunction_body1432 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_body1442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleblock_in_rulefunction_body1487 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_declaration_in_entryRuleprocedure_declaration1522 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_declaration1532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_heading_in_ruleprocedure_declaration1578 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleprocedure_declaration1590 = new BitSet(new long[]{0x000000B02C000020L});
    public static final BitSet FOLLOW_ruleprocedure_body_in_ruleprocedure_declaration1612 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DIRECTIVE_in_ruleprocedure_declaration1629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_body_in_entryRuleprocedure_body1665 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_body1675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleblock_in_ruleprocedure_body1720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_identifier_in_entryRuleprocedure_identifier1757 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_identifier1767 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleprocedure_identifier1808 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_heading_in_entryRuleprocedure_heading1848 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_heading1858 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleprocedure_heading1895 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleprocedure_heading1912 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_ruleformal_parameter_list_in_ruleprocedure_heading1938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleformal_parameter_list_in_entryRuleformal_parameter_list1975 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleformal_parameter_list1985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleformal_parameter_list2022 = new BitSet(new long[]{0x000000002C000010L});
    public static final BitSet FOLLOW_ruleformal_parameter_section_in_ruleformal_parameter_list2043 = new BitSet(new long[]{0x0000000001800000L});
    public static final BitSet FOLLOW_24_in_ruleformal_parameter_list2056 = new BitSet(new long[]{0x000000002C000010L});
    public static final BitSet FOLLOW_ruleformal_parameter_section_in_ruleformal_parameter_list2077 = new BitSet(new long[]{0x0000000001800000L});
    public static final BitSet FOLLOW_23_in_ruleformal_parameter_list2091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleformal_parameter_section_in_entryRuleformal_parameter_section2127 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleformal_parameter_section2137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevalue_parameter_section_in_ruleformal_parameter_section2184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_parameter_section_in_ruleformal_parameter_section2211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_parameter_section_in_ruleformal_parameter_section2238 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_parameter_section_in_ruleformal_parameter_section2265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_parameter_section_in_entryRulefunction_parameter_section2300 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_parameter_section2310 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_heading_in_rulefunction_parameter_section2355 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_heading_in_entryRulefunction_heading2390 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_heading2400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_rulefunction_heading2437 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulefunction_heading2454 = new BitSet(new long[]{0x0000000010400000L});
    public static final BitSet FOLLOW_ruleformal_parameter_list_in_rulefunction_heading2480 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulefunction_heading2493 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleresult_type_in_rulefunction_heading2514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleresult_type_in_entryRuleresult_type2550 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleresult_type2560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_identifier_in_ruleresult_type2606 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_parameter_section_in_entryRuleprocedure_parameter_section2640 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_parameter_section2650 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_heading_in_ruleprocedure_parameter_section2695 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_parameter_section_in_entryRulevariable_parameter_section2730 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariable_parameter_section2740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_rulevariable_parameter_section2777 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_rulevariable_parameter_section2798 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulevariable_parameter_section2810 = new BitSet(new long[]{0x0000000440000010L});
    public static final BitSet FOLLOW_ruleparameter_type_in_rulevariable_parameter_section2831 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevalue_parameter_section_in_entryRulevalue_parameter_section2867 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevalue_parameter_section2877 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_rulevalue_parameter_section2923 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulevalue_parameter_section2935 = new BitSet(new long[]{0x0000000440000010L});
    public static final BitSet FOLLOW_ruleparameter_type_in_rulevalue_parameter_section2956 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleparameter_type_in_entryRuleparameter_type2992 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleparameter_type3002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_identifier_in_ruleparameter_type3049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconformant_array_schema_in_ruleparameter_type3076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconformant_array_schema_in_entryRuleconformant_array_schema3111 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleconformant_array_schema3121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulepacked_conformant_array_schema_in_ruleconformant_array_schema3168 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleunpacked_conformant_array_schema_in_ruleconformant_array_schema3195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleunpacked_conformant_array_schema_in_entryRuleunpacked_conformant_array_schema3230 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleunpacked_conformant_array_schema3240 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleunpacked_conformant_array_schema3277 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleunpacked_conformant_array_schema3289 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulebound_especification_in_ruleunpacked_conformant_array_schema3310 = new BitSet(new long[]{0x0000000101000000L});
    public static final BitSet FOLLOW_24_in_ruleunpacked_conformant_array_schema3323 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulebound_especification_in_ruleunpacked_conformant_array_schema3344 = new BitSet(new long[]{0x0000000101000000L});
    public static final BitSet FOLLOW_32_in_ruleunpacked_conformant_array_schema3358 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleunpacked_conformant_array_schema3370 = new BitSet(new long[]{0x0000000440000010L});
    public static final BitSet FOLLOW_ruletype_identifier_in_ruleunpacked_conformant_array_schema3392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconformant_array_schema_in_ruleunpacked_conformant_array_schema3419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulepacked_conformant_array_schema_in_entryRulepacked_conformant_array_schema3456 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulepacked_conformant_array_schema3466 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_rulepacked_conformant_array_schema3503 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_rulepacked_conformant_array_schema3515 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_rulepacked_conformant_array_schema3527 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulebound_especification_in_rulepacked_conformant_array_schema3548 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_rulepacked_conformant_array_schema3560 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_rulepacked_conformant_array_schema3572 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruletype_identifier_in_rulepacked_conformant_array_schema3593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulebound_especification_in_entryRulebound_especification3629 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulebound_especification3639 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulebound_especification3675 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_rulebound_especification3686 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulebound_especification3697 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulebound_especification3708 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleordinal_type_identifier_in_rulebound_especification3730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleordinal_type_identifier_in_entryRuleordinal_type_identifier3765 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleordinal_type_identifier3775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_identifier_in_ruleordinal_type_identifier3821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_declaration_part_in_entryRulevariable_declaration_part3855 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariable_declaration_part3865 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_rulevariable_declaration_part3902 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulevariable_declaration_in_rulevariable_declaration_part3923 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_rulevariable_declaration_part3935 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rulevariable_declaration_in_rulevariable_declaration_part3957 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_rulevariable_declaration_part3969 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rulevariable_declaration_in_entryRulevariable_declaration4007 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariable_declaration4017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_rulevariable_declaration4063 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulevariable_declaration4075 = new BitSet(new long[]{0x00000F0440400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruletype_in_rulevariable_declaration4096 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulelabel_declaration_part_in_entryRulelabel_declaration_part4132 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulelabel_declaration_part4142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_rulelabel_declaration_part4179 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleLABEL_in_rulelabel_declaration_part4200 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_25_in_rulelabel_declaration_part4213 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleLABEL_in_rulelabel_declaration_part4234 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_24_in_rulelabel_declaration_part4248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconstant_definition_part_in_entryRuleconstant_definition_part4284 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleconstant_definition_part4294 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleconstant_definition_part4331 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleconstant_definition_in_ruleconstant_definition_part4352 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleconstant_definition_part4364 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleconstant_definition_in_ruleconstant_definition_part4386 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleconstant_definition_part4398 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleconstant_definition_in_entryRuleconstant_definition4436 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleconstant_definition4446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleconstant_definition4488 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleconstant_definition4505 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleconstant_in_ruleconstant_definition4526 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_definition_part_in_entryRuletype_definition_part4562 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuletype_definition_part4572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruletype_definition_part4609 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruletype_definition_in_ruletype_definition_part4630 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruletype_definition_part4642 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruletype_definition_in_ruletype_definition_part4664 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruletype_definition_part4676 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruletype_definition_in_entryRuletype_definition4714 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuletype_definition4724 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruletype_definition4766 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruletype_definition4783 = new BitSet(new long[]{0x00000F0440400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruletype_in_ruletype_definition4804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_in_entryRuletype4840 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuletype4850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesimple_type_in_ruletype4897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulestructured_type_in_ruletype4924 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulepointer_type_in_ruletype4951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_identifier_in_ruletype4978 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulepointer_type_in_entryRulepointer_type5013 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulepointer_type5023 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_rulepointer_type5060 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruletype_identifier_in_rulepointer_type5081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_identifier_in_entryRuletype_identifier5117 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuletype_identifier5127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruletype_identifier5168 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulestructured_type_in_entryRulestructured_type5208 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulestructured_type5218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_rulestructured_type5256 = new BitSet(new long[]{0x00000E0440000000L});
    public static final BitSet FOLLOW_ruleunpacked_structured_type_in_rulestructured_type5279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleunpacked_structured_type_in_entryRuleunpacked_structured_type5315 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleunpacked_structured_type5325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulearray_type_in_ruleunpacked_structured_type5372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerecord_type_in_ruleunpacked_structured_type5399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleset_type_in_ruleunpacked_structured_type5426 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefile_type_in_ruleunpacked_structured_type5453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefile_type_in_entryRulefile_type5488 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefile_type5498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_rulefile_type5535 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_rulefile_type5547 = new BitSet(new long[]{0x00000F0440400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulefile_component_type_in_rulefile_type5569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefile_component_type_in_entryRulefile_component_type5604 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefile_component_type5614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_in_rulefile_component_type5660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleset_type_in_entryRuleset_type5694 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleset_type5704 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleset_type5741 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleset_type5753 = new BitSet(new long[]{0x00000F0440400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulebase_type_in_ruleset_type5775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulebase_type_in_entryRulebase_type5810 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulebase_type5820 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_in_rulebase_type5866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerecord_type_in_entryRulerecord_type5900 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulerecord_type5910 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_rulerecord_type5947 = new BitSet(new long[]{0x0000300000000010L});
    public static final BitSet FOLLOW_rulefield_list_in_rulerecord_type5969 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_rulerecord_type5980 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefield_list_in_entryRulefield_list6016 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefield_list6026 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefixed_part_in_rulefield_list6084 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_rulefield_list6097 = new BitSet(new long[]{0x0000200000000010L});
    public static final BitSet FOLLOW_rulevariant_part_in_rulefield_list6118 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_rulevariant_part_in_rulefield_list6148 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_rulefield_list6162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefixed_part_in_entryRulefixed_part6202 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefixed_part6212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerecord_section_in_rulefixed_part6258 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_rulefixed_part6271 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulerecord_section_in_rulefixed_part6292 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_rulerecord_section_in_entryRulerecord_section6330 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulerecord_section6340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_rulerecord_section6386 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulerecord_section6398 = new BitSet(new long[]{0x00000F0440400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruletype_in_rulerecord_section6419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariant_part_in_entryRulevariant_part6455 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariant_part6465 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_rulevariant_part6502 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruletag_field_in_rulevariant_part6518 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulevariant_part6528 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_rulevariant_part6539 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulevariant_in_rulevariant_part6560 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_rulevariant_part6573 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulevariant_in_rulevariant_part6594 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_ruletag_field_in_entryRuletag_field6633 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuletag_field6644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruletag_field6684 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruletag_field6702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariant_in_entryRulevariant6743 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariant6753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecase_label_list_in_rulevariant6799 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulevariant6811 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_rulevariant6823 = new BitSet(new long[]{0x0000200000800010L});
    public static final BitSet FOLLOW_rulefield_list_in_rulevariant6844 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_rulevariant6856 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecase_label_list_in_entryRulecase_label_list6892 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulecase_label_list6902 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconstant_in_rulecase_label_list6948 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_rulecase_label_list6961 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleconstant_in_rulecase_label_list6982 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_rulearray_type_in_entryRulearray_type7020 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulearray_type7030 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_rulearray_type7067 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_rulearray_type7079 = new BitSet(new long[]{0x0000000000400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleindex_type_in_rulearray_type7100 = new BitSet(new long[]{0x0000000102000000L});
    public static final BitSet FOLLOW_25_in_rulearray_type7113 = new BitSet(new long[]{0x0000000000400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleindex_type_in_rulearray_type7134 = new BitSet(new long[]{0x0000000102000000L});
    public static final BitSet FOLLOW_32_in_rulearray_type7148 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_rulearray_type7160 = new BitSet(new long[]{0x00000F0440400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleelement_type_in_rulearray_type7181 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleindex_type_in_entryRuleindex_type7217 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleindex_type7227 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesimple_type_in_ruleindex_type7273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleelement_type_in_entryRuleelement_type7307 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleelement_type7317 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruletype_in_ruleelement_type7363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesimple_type_in_entryRulesimple_type7397 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulesimple_type7407 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesubrange_type_in_rulesimple_type7454 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleenumerated_type_in_rulesimple_type7481 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesubrange_type_in_entryRulesubrange_type7516 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulesubrange_type7526 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulelower_bound_in_rulesubrange_type7572 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_rulesubrange_type7584 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleupper_bound_in_rulesubrange_type7605 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulelower_bound_in_entryRulelower_bound7641 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulelower_bound7651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconstant_in_rulelower_bound7696 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleupper_bound_in_entryRuleupper_bound7731 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleupper_bound7741 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconstant_in_ruleupper_bound7786 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleenumerated_type_in_entryRuleenumerated_type7821 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleenumerated_type7831 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleenumerated_type7868 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleidentifier_list_in_ruleenumerated_type7890 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleenumerated_type7901 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLABEL_in_entryRuleLABEL7937 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLABEL7947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_ruleLABEL7993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_entryRuleDIGIT_SEQUENCE8027 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDIGIT_SEQUENCE8037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_ruleDIGIT_SEQUENCE8083 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_UNSIGNED_DIGIT_SEQUENCE_in_ruleDIGIT_SEQUENCE8101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSTATEMENT_PART_in_entryRuleSTATEMENT_PART8142 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSTATEMENT_PART8152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleSTATEMENT_PART8189 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_sequence_in_ruleSTATEMENT_PART8211 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleSTATEMENT_PART8222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulestatement_sequence_in_entryRulestatement_sequence8258 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulestatement_sequence8268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulestatement_in_rulestatement_sequence8314 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_rulestatement_sequence8327 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_rulestatement_sequence8348 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_rulestatement_in_entryRulestatement8386 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulestatement8396 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLABEL_in_rulestatement8443 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulestatement8455 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulesimple_statement_in_rulestatement8479 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulestructured_statement_in_rulestatement8506 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulestructured_statement_in_entryRulestructured_statement8543 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulestructured_statement8553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecompound_statement_in_rulestructured_statement8600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerepetitive_statement_in_rulestructured_statement8627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconditional_statement_in_rulestructured_statement8654 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulewith_statement_in_rulestructured_statement8681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulewith_statement_in_entryRulewith_statement8716 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulewith_statement8726 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_rulewith_statement8763 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulerecord_variable_in_rulewith_statement8784 = new BitSet(new long[]{0x0001000002000000L});
    public static final BitSet FOLLOW_25_in_rulewith_statement8797 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulerecord_variable_in_rulewith_statement8818 = new BitSet(new long[]{0x0001000002000000L});
    public static final BitSet FOLLOW_48_in_rulewith_statement8832 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_rulewith_statement8853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerecord_variable_in_entryRulerecord_variable8889 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulerecord_variable8899 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_in_rulerecord_variable8945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleconditional_statement_in_entryRuleconditional_statement8979 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleconditional_statement8989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleif_statement_in_ruleconditional_statement9036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecase_statement_in_ruleconditional_statement9063 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecase_statement_in_entryRulecase_statement9098 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulecase_statement9108 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_rulecase_statement9145 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_rulecase_statement9166 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_rulecase_statement9178 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulecase_limb_in_rulecase_statement9199 = new BitSet(new long[]{0x0000100001000000L});
    public static final BitSet FOLLOW_24_in_rulecase_statement9212 = new BitSet(new long[]{0x0000000000000450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulecase_limb_in_rulecase_statement9233 = new BitSet(new long[]{0x0000100001000000L});
    public static final BitSet FOLLOW_24_in_rulecase_statement9248 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_rulecase_statement9262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecase_limb_in_entryRulecase_limb9298 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulecase_limb9308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecase_label_list_in_rulecase_limb9354 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_rulecase_limb9366 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_rulecase_limb9387 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleif_statement_in_entryRuleif_statement9423 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleif_statement9433 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleif_statement9470 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleif_statement9491 = new BitSet(new long[]{0x0004000000000000L});
    public static final BitSet FOLLOW_50_in_ruleif_statement9503 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_ruleif_statement9524 = new BitSet(new long[]{0x0008000000000002L});
    public static final BitSet FOLLOW_51_in_ruleif_statement9537 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_ruleif_statement9558 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerepetitive_statement_in_entryRulerepetitive_statement9596 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulerepetitive_statement9606 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulewhile_statement_in_rulerepetitive_statement9653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerepeat_statement_in_rulerepetitive_statement9680 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefor_statement_in_rulerepetitive_statement9707 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefor_statement_in_entryRulefor_statement9742 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefor_statement9752 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_rulefor_statement9789 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulevariable_identifier_in_rulefor_statement9810 = new BitSet(new long[]{0x0020000000000000L});
    public static final BitSet FOLLOW_53_in_rulefor_statement9822 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleinitial_expression_in_rulefor_statement9843 = new BitSet(new long[]{0x00C0000000000000L});
    public static final BitSet FOLLOW_54_in_rulefor_statement9856 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_55_in_rulefor_statement9874 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulefinal_expression_in_rulefor_statement9896 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_rulefor_statement9908 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_rulefor_statement9929 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleinitial_expression_in_entryRuleinitial_expression9965 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleinitial_expression9975 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleinitial_expression10021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefinal_expression_in_entryRulefinal_expression10055 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefinal_expression10065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_in_rulefinal_expression10111 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_identifier_in_entryRulevariable_identifier10145 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariable_identifier10155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulevariable_identifier10196 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulerepeat_statement_in_entryRulerepeat_statement10236 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulerepeat_statement10246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_rulerepeat_statement10283 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_sequence_in_rulerepeat_statement10304 = new BitSet(new long[]{0x0200000000000000L});
    public static final BitSet FOLLOW_57_in_rulerepeat_statement10316 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_rulerepeat_statement10337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulewhile_statement_in_entryRulewhile_statement10373 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulewhile_statement10383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_rulewhile_statement10420 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_rulewhile_statement10441 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_rulewhile_statement10453 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_in_rulewhile_statement10474 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulecompound_statement_in_entryRulecompound_statement10510 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulecompound_statement10520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_rulecompound_statement10557 = new BitSet(new long[]{0x0D12E00000000050L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulestatement_sequence_in_rulecompound_statement10579 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_rulecompound_statement10590 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesimple_statement_in_entryRulesimple_statement10626 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulesimple_statement10636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleassignment_statement_in_rulesimple_statement10683 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_statement_in_rulesimple_statement10710 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulegoto_statement_in_rulesimple_statement10737 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulegoto_statement_in_entryRulegoto_statement10773 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulegoto_statement10783 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_rulegoto_statement10820 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleLABEL_in_rulegoto_statement10841 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_statement_in_entryRuleprocedure_statement10877 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleprocedure_statement10887 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleprocedure_identifier_in_ruleprocedure_statement10933 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_ruleactual_parameter_list_in_ruleprocedure_statement10954 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleassignment_statement_in_entryRuleassignment_statement10991 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleassignment_statement11001 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_in_ruleassignment_statement11047 = new BitSet(new long[]{0x0020000000000000L});
    public static final BitSet FOLLOW_53_in_ruleassignment_statement11059 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleassignment_statement11080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_in_entryRuleexpression11116 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleexpression11126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesimple_expression_in_ruleexpression11172 = new BitSet(new long[]{0x0000000000000082L});
    public static final BitSet FOLLOW_RULE_RELATIONAL_OPERATOR_in_ruleexpression11190 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulesimple_expression_in_ruleexpression11216 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulesimple_expression_in_entryRulesimple_expression11254 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulesimple_expression11264 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_rulesimple_expression11310 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleterm_in_rulesimple_expression11332 = new BitSet(new long[]{0x0000000000000102L,0x0000000000000003L});
    public static final BitSet FOLLOW_RULE_ADITION_OPERATOR_in_rulesimple_expression11352 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleSIGN_in_rulesimple_expression11376 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleterm_in_rulesimple_expression11400 = new BitSet(new long[]{0x0000000000000102L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleterm_in_entryRuleterm11438 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleterm11448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefactor_in_ruleterm11494 = new BitSet(new long[]{0x0000000000000202L});
    public static final BitSet FOLLOW_RULE_MULTIPLICATION_OPERATOR_in_ruleterm11512 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulefactor_in_ruleterm11538 = new BitSet(new long[]{0x0000000000000202L});
    public static final BitSet FOLLOW_rulefactor_in_entryRulefactor11576 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefactor11586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_in_rulefactor11633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_rulefactor11656 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_rulefactor11679 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_rulefactor11703 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleREAL_NUMBER_in_rulefactor11726 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRG_in_rulefactor11743 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleset_in_rulefactor11770 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_rulefactor11787 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_designator_in_rulefactor11815 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rulefactor11833 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_rulefactor11855 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_rulefactor11866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_rulefactor11886 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_rulefactor_in_rulefactor11908 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_designator_in_entryRulefunction_designator11944 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulefunction_designator11954 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulefunction_identifier_in_rulefunction_designator12000 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_ruleactual_parameter_list_in_rulefunction_designator12021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleactual_parameter_list_in_entryRuleactual_parameter_list12057 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleactual_parameter_list12067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleactual_parameter_list12104 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleactual_parameter_in_ruleactual_parameter_list12125 = new BitSet(new long[]{0x0000000002800000L});
    public static final BitSet FOLLOW_25_in_ruleactual_parameter_list12138 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleactual_parameter_in_ruleactual_parameter_list12159 = new BitSet(new long[]{0x0000000002800000L});
    public static final BitSet FOLLOW_23_in_ruleactual_parameter_list12173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleactual_parameter_in_entryRuleactual_parameter12209 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleactual_parameter12219 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleactual_value_in_ruleactual_parameter12265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleactual_value_in_entryRuleactual_value12299 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleactual_value12309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleactual_value12355 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleset_in_entryRuleset12389 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleset12399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleset12436 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleelement_list_in_ruleset12458 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleset12469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleelement_list_in_entryRuleelement_list12505 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleelement_list12515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleelement_list12561 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleelement_list12574 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleelement_list12595 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_rulevariable_in_entryRulevariable12633 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariable12643 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulevariable12685 = new BitSet(new long[]{0x0000010080100000L});
    public static final BitSet FOLLOW_rulevariable_l_in_rulevariable12711 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulevariable_l_in_entryRulevariable_l12747 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulevariable_l12757 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_rulevariable_l12805 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_list_in_rulevariable_l12826 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_rulevariable_l12838 = new BitSet(new long[]{0x0000010080100000L});
    public static final BitSet FOLLOW_rulevariable_l_in_rulevariable_l12859 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rulevariable_l12879 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_rulevariable_l12896 = new BitSet(new long[]{0x0000010080100000L});
    public static final BitSet FOLLOW_rulevariable_l_in_rulevariable_l12922 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_rulevariable_l12942 = new BitSet(new long[]{0x0000010080100000L});
    public static final BitSet FOLLOW_rulevariable_l_in_rulevariable_l12963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_list_in_entryRuleexpression_list13002 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleexpression_list13012 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleexpression_list13058 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleexpression_list13071 = new BitSet(new long[]{0x3000000080400450L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleexpression_in_ruleexpression_list13092 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruleconstant_in_entryRuleconstant13130 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleconstant13140 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_ruleconstant13196 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_IDENTIFIER_in_ruleconstant13214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_ruleconstant13257 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_ruleconstant13279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_ruleconstant13317 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleREAL_NUMBER_in_ruleconstant13339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRG_in_ruleconstant13373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleREAL_NUMBER_in_entryRuleREAL_NUMBER13415 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleREAL_NUMBER13425 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_ruleREAL_NUMBER13472 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleREAL_NUMBER13484 = new BitSet(new long[]{0xC000000000000042L});
    public static final BitSet FOLLOW_RULE_UNSIGNED_DIGIT_SEQUENCE_in_ruleREAL_NUMBER13501 = new BitSet(new long[]{0xC000000000000002L});
    public static final BitSet FOLLOW_rulescale_factor_in_ruleREAL_NUMBER13528 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_ruleREAL_NUMBER13558 = new BitSet(new long[]{0xC000000000000000L});
    public static final BitSet FOLLOW_rulescale_factor_in_ruleREAL_NUMBER13579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulescale_factor_in_entryRulescale_factor13616 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulescale_factor13626 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_rulescale_factor13664 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_63_in_rulescale_factor13682 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleDIGIT_SEQUENCE_in_rulescale_factor13705 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSIGN_in_entryRuleSIGN13741 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSIGN13752 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleSIGN13790 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleSIGN13809 = new BitSet(new long[]{0x0000000000000002L});

}